(Е. Джобс) Текстовый файл содержит строку из символов A, B и C, всего не более чем \(10^6\) символов. Найдите максимальную длину строки, состоящей только из комбинаций AB и СAС. Например, в строке BABABCACABCB такая подстрока ABABCACAB (длина \(9).\)
Решение:
Python
s = open('5463.txt').readline().strip()
dp = [0] * len(s)
for i in range(2):
if s[i:i+2] == 'AB':
dp[i] = 2
elif s[i:i+3] == 'CAC':
dp[i] = 3
if s[2:4] == 'AB' or s[2:5] == 'CAC':
n = 2 if s[2:4] == 'AB' else 3
if s[:2] == 'AB':
dp[2] = dp[0] + n
else:
dp[2] = n
for i in range(3, len(s) - 2):
if s[i:i+2] == 'AB' or s[i:i+3] == 'CAC':
n = 2 if s[i:i+2] == 'AB' else 3
if s[i-2:i] == 'AB':
dp[i] = dp[i-2] + n
elif s[i-3:i] == 'CAC':
dp[i] = dp[i-3] + n
else:
dp[i] = n
if s[-2:] == 'AB':
if s[-4:-2] == 'AB':
dp[-2] = dp[-4] + 2
elif s[-5:-2] == 'CAC':
dp[-2] = dp[-5] + 2
else:
dp[-2] = 2
print(max(dp))
Ответ: \(69\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене