Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Алгоритмы
Курсы ККДП
Дистрибутивы
Ссылки

HotLog


 

Нули

(Время: 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);

[Обсуждение] [Все попытки] [Задача]


Красноярский краевой Дворец пионеров, (c)2006 - 2017, ICQ: 151483