Нули
(Время: 1 сек. Память: 16 Мб Сложность: 16%)
Решение №1
Здесь можно определить некоторую переменную-счетчик, в которой хранить текущее количество непрерывно идущих нулей при просмотре последовательности слева направо (можно и справа налево). При этом, если встречается единица, то нужно сбросить значение счетчика на ноль. Просматривая список нужно сверять значение счетчика с максимальным ранее найденным и таким образом запоминать максимальное. Считывать данные можно как в одну строку, обрабатывая нули и единицы как элементы массива, либо читать посимвольно до окончания потока данных.
c=max=0;
while(not EOF){
read(x);
if(x=='0') c=c+1; else c=0;
if(c>max) max=c;
}
write(max);
Решение №2
Можно использовать другой подход к решению этой задачи. Проверить наличие подпоследовательности из k нулей в исходной строке можно с помощью функции strstr в Си или pos в Паскале. Используя это можно создать некоторую пустую строку, которую последовательно удлинять на один ноль и каждый раз проверять имеется ли такая подстрока в исходной до тех пор, пока такая подстрока существует. Длина последней существующей подстроки нулей и будет ответом.
p='';
read(s);
while(p содержится в s) p=p+'0';
write(len(p)-1);
|