Найти самую длинную последовательность 0 в массиве[C++]

Рейтинг: 1Ответов: 1Опубликовано: 29.06.2011

Решал задачу по следующему алгоритму. Имеем максимальный и текущую переменную. Перебираем массив, если найден элемент = 0; то увеличиваем значение счетчика на единицу. Иначе, если текущая последовательность больше максимально, то присваиваем максимальную текущей. И обнуляем счетчик. Программа мне просто выводит количество элементов с 0. Что я сделал не так.

#include <iostream>
using namespace std;

int main()
{
    const int size = 11;

    int arr[size] = {100, 1, 0, 36, 0000, 74, 00, 666, 32, 000000, 17};
    int temp = 0;
    int max = 0;
    for (int i = 0; i < size; ++i)
    {
        if(arr[i] == 0)
        {
            ++temp;
        }
        else
        {
            if(temp > max)
            {
                max = temp;
            }
        }
    }
    cout << "Max is :" << max << endl; 
    return 0;
}

Ответы

▲ 3
  1. Зачем вам числа типа 0000? Последовательность нулей, как я понимаю, это {..., 0, 0, 0, ...};
  2. У вас не хватает обнуления temp при окончании последовательности.
  3. Плюс необходим код для обработки очереди, которая будет в конце массива (когда второе условие не выполнится).