Решение. Для решения данной задачи будем посимвольно считывать текстовый файл. Объявим переменные c1 и c2, которые будут хранить предыдущий символ в файле и текущий. Также объявим переменные k и max. Первая нужна для определения длины каждой последовательности неповторяющихся символов, вторая — для хранения максимальной длины такой последовательности. Алгоритм будет сравнивать значение текущего символа со значением предыдущего и, если символы не будут повторяться, увеличивать значения счётчика k на 1.
Приведём решение данной задачи на языке Pascal.
var k, max: integer;
c1, c2: char;
f: text;
begin
assign(f,'C:\24.txt');
reset(f);
c1 := '0';
c2 := '0';
k := 1;
max := 0;
while not Eof(f) do begin
c2 := c1;
read(f, c1);
if (c1 <> c2) and (c2 <> '0') then begin
k := k + 1;
end
else begin
if k > max then
max := k;
k := 1;
end;
end;
if k > max then
max := k;
writeln(max);
end.
В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ — 35.
Ответ: 35.
Примечание. Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём решение Николая Чуркина (Тимашевск) на языке Python.
f = open('24.txt').readline()
k = 1
m = 0
for i in range(1, len(f)):
if f[i] != f[i-1]:
k += 1
else:
m = max(m, k)
k = 1
m = max(m, k)
print(m)
Приведём решение Максима Григорьева на языке Python.
from itertools import permutations
with open('24_demo.txt') as f:
s = f.read()
pod = [''.join(x) for x in permutations('XYZ', 2)]
x, counter, c_max = 0, 0, 0
for i in range(len(s)):
if s[i + x:i + 2 + x] in pod:
counter += 1
x = 2
else:
c_max = max(c_max, counter)
counter, x = 0, 0
print(c_max)
Приведём решение Юрия Красильникова на языке Python.
s = open('24_demo.txt').readline()
a = ''.join(['*' if s[i]!=s[i-1] else ' ' for i in range(1,len(s))]).split()
print(max(len(x) for x in a)+1)
Приведём решение Тимофея Софронова на языке Python.
f=open('24_demo.txt').readline()
m = 0
for i in range(0,len(f)):
for j in range (i+m, len(f)):
c = f[i:j+1]
if all(not x in c for x in['XX','ZZ','YY']):
m = max(m,len(c))
else: break
print(m)
Приведём решение Михаила Глинский на языке Python.
s=open('24_demo.txt').readline()
s=s.replace('XX','X X').replace('YY','Y Y').replace('ZZ','Z Z')
s=s.replace('XX','X X').replace('YY','Y Y').replace('ZZ','Z Z')
m=[len(x) for x in s.split()]
print(max(m))
Приведём решение Екатерины Паркаевой на языке С.
#include int main()
{
FILE *f;
int mk = 0, k = 0;
char s = 'Q', p_s = 'Q';
if((f = fopen(«24_demo.txt", "r")) == NULL)
{
printf("file not open");
return 1;
}
while(!feof(f))
{
if(p_s != s)
k++;
else
{
if(mk < k)
mk = k;
k = 1;
}
p_s = s;
fscanf(f, "%c", &s);
}
fclose(f);
printf("%d", mk);
return 0;
}
Приведём решение Севы Тимофеева на языке С++.
#include#includeusing namespace std;
int main () {
ifstream fin("24_demo.txt");
char a,b;
int s=0;
int f=0;
fin >> a;
while(fin >> a){
if(a != b)f++;
if(f>s)s=f;
if(a == b)f=1 ;
b=a;
}
cout << s << endl;
}
}