题目链接
https://www.luogu.com.cn/problem/B2097
解题思路
首先定义一个记录最长平台的变量 max,接着定义变量 num 用来计数,循环遍历,如果前后两个数相等那么 num 加一,否则 num 重置为 1,循环遍历中如果 num 大于 max,则更新 max 的值
解题代码
C 代码
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int a[n];
int Maxlen = 0;
int len = 1;
for(int i = 0; i < n; i++){
scanf("%d",&a[i]);
if(i > 0)
{
if(a[i] == a[i-1])
len++;//记录实时长度
else{
if(len > Maxlen)
{
Maxlen = len;
len = 1;
}
}
}
}
printf("%d",Maxlen);
return 0;
}
C++代码
#include<iostream>
using namespace std;
const int N = 1e5+10;
int a[N],Max = 1,n; //Max记录最大长度
int main()
{
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
int cnt = 1;
for(int i=1;i<n;i++){
if(a[i] == a[i-1]) cnt ++; //只要出现连续的数则计数++
else{ //否则连续中断,更新最大值
if(cnt > Max){
Max = cnt;
cnt=1; //每个连续的平台至少一个数
}
}
}
cout<<Max;
return 0;
}