子序列最大的序列,每个元素都相同

时间:2018-11-04 12:37:20

标签: c++ algorithm search sequence

我想找出每个元素等于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 :(得分:1)

您可以简单地遍历该序列,当您看到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;
}