Текстовый файл состоит из символов P, Q, R и S.
Определите максимальное количество идущих подряд символов в прилагаемом файле, среди которых нет идущих подряд
Для выполнения этого задания следует написать программу.
Для решения данной задачи будем посимвольно считывать текстовый файл. Объявим
Приведём решение данной задачи на языке 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 = 'P') then begin
if k > max then max := k;
k := 1;
end
else k := k + 1;
end;
if k > max then
max := k;
writeln(max);
end.
В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ — 188.
Ответ: 188.
Примечание. Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём решение Витаса Ремейкиса на языке Python.
file = open('24.txt', 'r')
st = file.readline()
k = 1
mx = 0
for i in range(1, len(st)):
if st[i] == 'P' and st[i-1] == 'P':
k = 1
else:
k += 1
if k > mx:
mx = k
print(mx)
Приведём решение Ивана Каримова на языке Python.
import re
s = open('24.txt').readline()
print(max(map(len, re.split(r'P{2,}', s)))+2)
Приведём решение Ильи Андрианова на языке Python.
s = open('24.txt').readline()
while 'PP' in s:
s = s.replace('PP', 'P P')
print(max([len(x) for x in s.split()]))
Приведём решение Ивана Новикова на языке Python.
a = open('24.txt').readline()
m = 0
for l in range(len(a)):
for r in range(l + m , len(a)):
c = a[l:r + 1]
if 'PP' not in c:
m = max(m , len(c))
elif 'PP' in c:
break
print(m)

