首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一道小算法有关问题

2013-06-25 
一道小算法问题一个数组int a[10],我想判断最大的连续数字有多少个,比如数组中有 1,2,1,1,5,6,30,30,30,10

一道小算法问题
一个数组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;
}

热点排行