一道小算法问题
一个数组int a[10],我想判断最大的连续数字有多少个,比如数组中有 1,2,1,1,5,6,30,30,30,10,那么最大就是3了,因为连续存储了3个30,我要输出最大是多少个就可以了。求算法。
[解决办法]
for (i = 1; i < N; ++i) {
if (a[i] == a[i - 1]) {
++n;
} else {
if (n > maxn) maxn = n;
n = 0;
}
}
int a[10]={1,2,1,1,5,6,30,30,30,10};
int count=1,//本次计数
maxcount=1;//最大数连续出现的次数
int max=a[0];//记录最大的数
int i;
for(i=1;i<10;i++)
{
if(max==a[i])
{
count++;//相等计数增加
}
else//不等
{
if(max<a[i])//碰到更大的数,重新开始计数
{
max=a[i];
count=1;
maxcount=1;
}
else//遇到小的数
{
if(maxcount<count)
maxcount=count;//记录上一次大数的统计结果
count=0;//计数清零
}
}
}
#include <stdio.h>
int main(){
int a[10] = {1, 2, 1, 1, 5, 6, 30 , 30, 30, 10};
int cnt = 1, max = 0;
for(int i = 1; i < 10; ++i){
if(a[i] == a[i - 1]) ++cnt;
else{
max = max > cnt ? max : cnt;
cnt = 1;
}
}
max = max > cnt ? max : cnt;
printf("%d\n", max);
return 0;
}