Форум » Обработка символьных строк » Задача 24 из варианта 5 сборника С.С Крылова, Т.Е. Чуркиной » Ответить

Задача 24 из варианта 5 сборника С.С Крылова, Т.Е. Чуркиной

never: Добрый день! Коллеги, наверное многие используют для подготовки сборник С.С Крылова, Т.Е. Чуркиной. Возник вопрос по задаче 24 из 5 варианта. Условие задачи: Текстовый файл состоит не более чем из 10^6 символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых символ Z встречается не более двух раз. Ссылка на файл click herehttps://files.nobr.ru/#files%2FИнформатика-2021-20%2F24 В ответе даётся число 40. У меня в ответе получается 50. Может быть кто-то решал эту задачу? Хотелось бы сверить ответ. Спасибо!

Ответов - 6

cabanov.alexey: Ответ в сборнике правильный, показывайте как решали.

never: Программа: [pre2]f = open("24 варианты 1-5.txt") s = f.read() m = z = 0 start = 0 for i in range(len(s)): if s[ i] == 'Z': z += 1 if z == 1: fz = i elif z == 2: sz = i else: if i - start > m: m = i - start beg_f = start end_f = i start = fz + 1 fz = sz sz = i z = 2 print(m) print(s[beg_f:end_f])[/pre2] Ответ: 50 XXYXXYZXXXYYXYYYYXXYYYXXYYXYXXYXXXYYYYZYXXYYYYXYXY

romad: Посмотрела в сборнике - ответ 50 на задачу 24 вариант 5, это рядом в задаче 23 ответ 40. У меня несколько другой вариант решения, но тоже дает ответ 50. [pre2] f = open('24.txt') s = f.readline() a=[] maxD = 0 for i in range(len(s)-2): if s[ i] == 'Z': a.append(i) i1=0 for i in range(len(a)-2): maxD = max(maxD, a[i+2] - i1) i1 = a[ i]+1 print(maxD)[/pre2]


never: Спасибо!

Агаркова: Здравствуйте, а у меня не получается результат 50. Я нашла длину цепочки 39. Моя программа на Паскале. Я просто не совсем разбираюсь с питоном, поэтому предложенные программы не совсем поняла. Можете посмотреть, пожалуйста, в чем моя ошибка в программе. Я использую два счетчика - длина цепочки с двумя символами Z - lenZ и счетчик количества встречи символа Z в цепочке - colZ. В случае, когда встречается третий символ Z по счету, то эти переменные принимают значение 1, так как они становятся началом следующей цепочки и первым значением встречи символа Z в текущей цепочке. ПРОГРАММА [pre2] var i, lenZ, colZ, max: longint; s: string; begin assign(input, '24 варианты 1-5.txt'); readln(s); max:=0; colZ:=0; lenZ:=0; for i:=1 to length(s) do begin if s[ i]<>'Z' then begin lenZ := lenZ+1;; if lenZ>max then max:=lenZ; end else begin colZ := colZ+1; if colZ<=2 then begin lenZ := lenZ+1;; if lenZ>max then max:=lenZ; continue end else begin lenZ := 1;; colZ := 1;; end; end; end; write (max); end.[/pre2]

NoName: [pre2] f = open('24 варианты 1-5.txt') s = f.readline() s= s.split('Z') k = m = 0 for i in range(len(s)-2): k = len(s[ i]) + len(s[i+1]) + len(s[i+2]) + 2 m = max(m, k) print(m)[/pre2]



полная версия страницы