c语言洛谷b2097
时间: 2023-12-21 08:30:45 浏览: 110
根据提供的两个引用,我们可以看出这是两个不同的C语言程序,分别用于解决洛谷上的B2097题目。这道题目的要求是找到一个数列中最长的连续相同的数的个数。
下面是第一个程序的解释:
```c
#include<stdio.h>
int main() {
int x[200],y[200];
int n,i,max=0;//初始化max
scanf("%d",&n);
for(i=1;i<=n;i++) {
scanf("%d",&x[i]);
if(x[i]==x[i-1]) y[i]=y[i-1]+1;//核心,和前一项相关
else y[i]=1;//如果不是,归一
if(y[i]>max) max=y[i];//更新数据
}
printf("%d",max);
return 0;
}
```
这个程序的思路是,首先读入一个长度为n的数列,然后遍历这个数列,如果当前数和前一个数相同,则将当前数的计数器加1,否则将当前数的计数器归一。在遍历的过程中,记录下最大的计数器值,即为最长的连续相同的数的个数。最后输出这个最大值即可。
下面是第二个程序的解释:
```c
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<stdbool.h>
int main(){
int pro,next,n,sum=1,max;
int i;
scanf("%d",&n);
scanf("%d",&pro);
max=1;
for(i=1;i<n;i++){
scanf("%d",&next);
if(next==pro){
sum++;
if(max<sum){
max=sum;
}
pro=next;
}
else{
pro=next;
sum=1;
}
}
printf("%d\n",max);
return 0;
}
```
这个程序的思路是,首先读入一个长度为n的数列,然后遍历这个数列,如果当前数和前一个数相同,则将当前数的计数器加1,否则将当前数的计数器归一。在遍历的过程中,记录下最大的计数器值,即为最长的连续相同的数的个数。最后输出这个最大值即可。
阅读全文