Задания
Версия для печати и копирования в MS Word

Тек­сто­вый файл со­сто­ит не более чем из 106 сим­во­лов A, B и C. Опре­де­ли­те мак­си­маль­ное ко­ли­че­ство иду­щих под­ряд сим­во­лов A.

Для вы­пол­не­ния этого за­да­ния сле­ду­ет на­пи­сать про­грам­му. Ниже при­ведён файл, ко­то­рый не­об­хо­ди­мо об­ра­бо­тать с по­мо­щью дан­но­го ал­го­рит­ма.

За­да­ние 24

Спрятать решение

Ре­ше­ние.

При­ведём ре­ше­ние Ни­ко­лая Чур­ки­на (Ти­ма­шевск) на языке Python.

f = open('24.txt').readline()

k = 1

m = 0

for i in range(len(f)-1):

if f[i] == 'A' and f[i+1] == 'A':

k += 1

m = max(m, k)

else: k = 1

print(m)

 

В ре­зуль­та­те ра­бо­ты дан­но­го ал­го­рит­ма при вводе дан­ных из файла в усло­вии по­лу­ча­ем ответ  — 7.

 

Ответ: 7.

 

При­ведём ре­ше­ние Та­ги­ра Ши­гер­ба­е­ва на языке Python.

f = open('24.txt').readline().replace('B','*').replace('C','*').split('*')

print(len(max(f, key= len)))

 

При­ведём ре­ше­ние Ми­ха­и­ла Глин­ско­го на языке Python.

f = open('zadanie24_1.txt').readline()

f = f.replace('B',' ')

f = f.replace('C',' ')

m = f.split()

dl = set(len(x) for x in m )

print(max(dl))

 

При­ведём дру­гое ре­ше­ние дан­ной за­да­чи на языке Pascal.

Для ре­ше­ния дан­ной за­да­чи будем по­сим­воль­но счи­ты­вать тек­сто­вый файл. Объ­явим пе­ре­мен­ные: maxLen  — мак­си­маль­ная длина по­сле­до­ва­тель­но­сти, curLen  — вре­мен­ное хра­не­ние длины по­сле­до­ва­тель­но­сти, i  — пе­ре­мен­ная для пе­ре­бо­ра всех сим­во­лов, s  — стро­ка для ра­бо­ты с сим­во­ла­ми из файла. Ал­го­ритм будет срав­ни­вать зна­че­ние те­ку­ще­го сим­во­ла со зна­че­ни­ем преды­ду­ще­го, и если сим­во­лы будут удо­вле­тво­рять нуж­ным усло­ви­ям, то зна­че­ние счет­чи­ка будет уве­ли­чи­вать­ся на 1.

 

При­ведём ре­ше­ние дан­ной за­да­чи на языке Pascal.

var maxLen, curLen, i: integer;

s: string;

begin

assign(input, '24.txt');

readln(s);

maxLen := 1;

curLen := 1;

for i:=2 to Length(s) do

if (s[i] = s[i-1]) and (s[i] = 'A') then begin

curLen := curLen + 1;

if curLen > maxLen then

maxLen := curLen;

end

else

curLen := 1;

writeln(maxLen);

end.

Раздел кодификатора ФИПИ: