Задание №24 ЕГЭ Информатика с ответом и решением
Ответ: 15
Условие
Текстовый файл состоит не более чем из 106 символов L, D и R. Определите максимальную длину цепочки вида LDRLDRLDR... (составленной из фрагментов LDR, последний фрагмент может быть неполным).
Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Подсказки — как подойти к решению
- Цепочка собирается из повторяющихся фрагментов LDR, причём последний фрагмент может быть неполным. Сравнивай очередной символ с ожидаемым по позиции: порядок L, D, R повторяется по кругу.
- Следи за обрывом: если ожидание нарушено, но символ равен L, цепочка начинается заново с единицы, а в остальных случаях счётчик обнуляется. На этом тонком моменте теряют один символ.
Решение
Приведём решение Чуркина Николая (Тимашевск) на языке Python.
f = open('24.txt').readline()
k = m = 0
for i in range(len(f)):
if (f[i] == 'L' and k%3 == 0) or (f[i] == 'D' and k%3 == 1) or (f[i] == 'R' and k%3 == 2):
k += 1
m = max(m, k)
elif f[i] == 'L': k = 1
else: k = 0
print(m)
В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ — 15.
Ответ: 15.
Приведём решение Королёва Андрея на языке Python.
f = open('24.txt').readline()
d = f.replace('LDR','X')
cnt = 0
max_len = 0
for g in range(len(d)):
if d[g]=='X':
cnt+=1
else:
max_len = max(max_len,cnt)
cnt = 0
print(max_len * 3) # Так как Х — это 3 символа (LDR), длину цепочки умножаем на 3.
Приведём решение Сергея Калугина на языке Python.
f = open('24.txt').readline()
f = f.replace('LDR', '***').replace('L', ' ').replace('D', ' ').replace('R', ' ').split()
print(len(max(f,key=len)))
-->
Приведём решение Ильи Андрианова на языке Python.
s = open('zadanie24_2.txt').readline()
cnt = 2
maxi = 0
for i in range(0, len(s)-2, 1):
if s[i:i+3] in ('LDR', 'DRL', 'RLD'):
cnt += 1
maxi = max(maxi, cnt)
else:
cnt = 2
print(maxi)
Приведём другое решение данной задачи на языке Pascal.
Для решения данной задачи будем посимвольно считывать текстовый файл. Объявим переменные: s — строка для работы с символами из файла, maxCount — максимальная длина последовательности, count — временное хранение длины последовательности, i — переменная для перебора всех символов. Алгоритм будет сравнивать значения на трех позициях, и если символы будут удовлетворять нужным условиям, то значение счетчика будет увеличиваться на 1.
Приведём решение данной задачи на языке Pascal.
begin
var s: string;
var i, count, maxCount: integer;
assign(input, '24.txt');
readln(s);
count:=0;
maxCount:=0;
for i:=1 to Length(s) do
if ((s[i]='L') and (count mod 3=0)) or
((s[i]='D') and (count mod 3=1)) or
((s[i]='R') and (count mod 3=2)) then begin
count := count+1;
if count > maxCount then
maxCount := count;
end
else if s[i]='L' then count:=1
else count := 0;
writeln(maxCount);
end.
Приведём решение Севы Тимофеева на языке C++.
#include
#include
using namespace std;
int main () {
ifstream fin("C:/Users/Сева/Downloads/zadanie24_2.txt");
char a,b;
int s=0,f=0,y=0;
fin >> a;
while(fin >> a){
if(b=='L')y++;
if(y>0){
if(b=='L'&&a=='D')s++;
if(b=='D'&&a=='R')s++;
if(b=='R'&&a=='L')s++;
if(s>f)f=s;
if((b=='L'&&a!='D')||(b=='D'&&a!='R')||(b=='R'&&a!='L')){
s=1;
y=0;
}
}
b=a;
}
cout <<f <
Типичные ошибки
- Учтены только полные фрагменты, а неполный хвост в длину цепочки тоже входит. Дочитай условие: последний фрагмент может быть короче трёх символов.
В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №24 по информатике