Последовательность с наибольшим размером подпоследовательности, в которой каждый элемент одинаков - PullRequest
0 голосов
/ 04 ноября 2018

Я хочу найти самую большую непрерывную подпоследовательность, каждый элемент которой равен 5.

Я пытался написать код для этого, но не смог найти правильный метод

пример -> если последовательность похожа на 5 5 1 0 93 43 5 5 5 5 21 ответ будет 4, поскольку в массиве присутствуют 4 непрерывных 5. Постскриптум - Я новичок застрял на этом.

int large(int a[],int n)
{
    int i=0,j=0,sublen=0;
    while(i<n)
    {
        if(a[i]==1)
        {
            sublen++;
            for(int j=i+1;j<n;j++)
            {
                if(a[j]==1)
                {
                    sublen++;
                }
                else
                {
                    i=j+1;
                    continue;
                }
            }
        }   
        else
        {
            i++;
        }
   }
   return sublen;
}

1 Ответ

0 голосов
/ 04 ноября 2018

Вы можете просто выполнить итерацию последовательности, когда вы видите 5, затем увеличиваете счетчик, в противном случае сбрасываете счетчик на 0. Когда вы увеличиваете тест счетчика, чтобы увидеть, является ли это наибольшее значение, которое оно удерживает до сих пор. В конце вернуть наибольшее значение.

Что-то вроде:

int large(const int *a, int n)
{
    int sublen = 0, counter = 0;

    for (int i = 0; i < n; ++i) {
        if (a[i] == 5) { // found a 5
            ++counter;
            if (sublen < counter) { // test for largest value so far
                sublen = counter;
            }
        } else { // not a 5
            counter = 0;
        }
    }
    return sublen;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...