• Как задать условие для цикла?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    По уму, надо выделять последовательность нулей в цикле и там смотреть, а не с начала ли дня она идет и не до конца ли дня.

    Но можно проще. Считайте вообще все последовательности нулей. до какой-то пары (это значит сейчас 0 - а следующаяя ячейка не ноль.). Но так посчитаются недо-окна перед первыми парами. Вы можете эти недо-окна подсчитать. Это просто те дни, в которых в начале стоит 0. Но тут, вы правильно заметили, проблема. День в котором одни нули посчитается недо-окном и вычтется, но ничего к ответу не прибавит. Поэтому вам надо отдельно прибавить количество дней из одних только нулей.
    Ответ написан
    Комментировать
  • Как задать условие для цикла?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Просто берёшь и все нули с начала строки заменяешь на, скажем, -1, пока не наткнёшься на ненулевое значение. Потом то же делаешь с конца.

    Например, строка {0, 0, 1, 5, 0, 7, 0, 0} превратится в {-1, -1, 1, 5, 0, 7, -1, -1}.

    Всё. Теперь все оставшиеся в массиве нули - это окна.
    Ответ написан
    2 комментария
  • Как посчитать число цифр в скобках, предварительно проверенных на сбалансированность?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Цикл нужен. Еще нужен счетчик открытых скобок.
    Проходитесь по строке, если скобка открывается - увеличивайте счетчик скобок. если закрывается - у меньшайте. Если текущий символ - цифра, то прибавляйте к ответу, если счетчик отркытых скобок положителен.

    Если счетчик открытых скобок стал где-то отрицательным, или в конеце цикла он не ноль - то строка не сбалансирована.
    Ответ написан
    5 комментариев