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