跟踪C

时间:2016-11-02 14:33:05

标签: c arrays

我有一个包含0和1的数组。现在我想找到连续多少时间(最大值)。就像我有一个数组0 1 1 1 0 0 1 1 1 1 0 1.然后我的结果将是4.我可以计算总出现次数1但不能保持连续出现。如何保持连续出现的结果。我是初学者

3 个答案:

答案 0 :(得分:1)

每次遇到0都需要重置计数器。在重置之前,您需要检查该值是否大于您对计数器的先前值。

我不太记得C语法100%,但是这样的话:

int size = sizeof(yourArray) / sizeof(int);
int largest = 0;
int counter = 0;

for(int i = 0; i < size; i++) {
    if(yourArray[i] == 1) {
        counter++;
        if(counter > largest) {
            largest = counter;
        }       
    } else {
        counter = 0;
    }
}

答案 1 :(得分:0)

这应该可行我猜

#include <stdio.h>

void main ()
{
    int a[10] = { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1};

    int count = 0;
    int temp = 0;
    for (int i = 0; i < 10; i++)
    {
        if (a[i] == 1)
            temp++;
        else
        {
            if (count < temp)                                                                                                                         
            {
                count = temp;
                temp = 0;
            }
        }

    }
    if (count < temp)
    {
        count = temp;
        temp = 0;
    }
    printf (" Total %d", count);
}

答案 2 :(得分:0)

只需使用简单的回溯:

#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char const *argv[]) {
    int array[] = {0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1};
    int size, i, maxSoFar = 0, maxEndingHere = 0;

    size = sizeof(array) / sizeof(*array);

    for (i = 0; i < size; i++) {
        if (array[i] == 1) {
            maxEndingHere++;
        } else {
            maxEndingHere = 0;
        }
        if (maxEndingHere > maxSoFar) {
            maxSoFar = maxEndingHere;
        }
    }

    printf("%d", maxSoFar);

    return 0;
}