πЕГЭ · ИИ-репетитор12 предметов · задания ФИПИ
Главная → Информатика → Задания №24 → Задание i24-07

Задание №24 ЕГЭ Информатика с ответом и решением

Ответ: 45

Условие

Текстовый файл состоит не более чем из 106 символов L, D и R. Определите максимальное количество идущих подряд символов, среди которых каждые два соседних различны.

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

Файл с исходными данными к этому заданию в открытом банке не опубликован — разбирай подход по официальному решению ниже.

Подсказки — как подойти к решению

  1. Файл содержит одну длинную строку символов L, D и R — читай её целиком одной строкой, а не по строкам. Иди по символам циклом и на каждом шаге сравнивай очередной символ с предыдущим.
  2. Держи текущую длину цепочки и максимум. Когда соседние символы совпали, цепочка рвётся: счётчик сбрасывай в единицу (текущий символ уже начало новой цепочки), а не в ноль — иначе потеряешь один символ.

Решение

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

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

k = 1

m = 0

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

if f[i] != f[i+1]:

k += 1

m = max(m, k)

else:

k = 1

print(m)

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

Ответ: 45.

Примечание. Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.

Приведём решение Ильи Андрианова на языке Python.

s = open('zadanie24_2.txt').readline()

while 'DD' in s or 'RR' in s or 'LL' in s:

s = s.replace('DD', 'D D').replace('RR', 'R R').replace('LL', 'L L')

print(max([len(x) for x in s.split()]))

Приведём решение Ивана Новикова на языке Python.

a = open('zadanie24_2.txt').readline()

m = 0

x = 'LL RR DD'

for x1 in x.split():

while x1 in a:a = a.replace(x1 , f'{x[0]} {x[1]}')

for b in a.split():

m = max(len(b) , m)

print(m)

Приведём другое решение данной задачи на языке 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] then begin

curLen := curLen + 1;

if curLen > maxLen then

maxLen := curLen;

end

else

curLen := 1;

writeln(maxLen);

end.

Типичные ошибки

Решить это задание в тренажёре

В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №24 по информатике