C语言的小算法
一个数组int a[10],我想判断0的最大连续数字有多少个,比如数组中有 1,0,0,0,1,0,0,1,1,0,那么最大就是3了,因为连续存储了3个0,我要输出最大是多少个就可以了。求算法。
[解决办法]
定义一个变量a=0, 记录上一次连续0的个数。
定义一个变量c=0, 记录当前连续0的个数
1. 扫描一遍数组,
2. 遇到0,就开始c++,
3. 遇到非零,用c和a比较,大于就更新a=c,
4. 然后在把c设置为0
5. 重复到1直到数组结尾。
[解决办法]
#include <stdio.h>
int main(){
int a[10] = {1, 0, 0, 0, 1, 0, 0, 1, 1, 0};
int cnt, max = 0;
for(int i = 0; i < 10; ++i){
if(a[i] == 0){
if(i == 0
[解决办法]
a[i - 1]) cnt = 1;
else ++cnt;
}
max = max > cnt ? max : cnt;
}
printf("%d\n", max);
return 0;
}
#include<cstdio>
#define maxsize 1000
int main()
{
int a[maxsize],n;
scanf("%d",&n);
int i;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
int num=0,maxnum=0;
for(i=0;i<n;i++)
{
if(a[i]==0)
num++;
else
{
maxnum=maxnum>num?maxnum:num;
num=0;
}
}
printf("%d\n",maxnum);
return 0;
}