B2097

· · 题解

我们可以用 cnt 来记录每个数字的最长段

#include<bits/stdc++.h>
using namespace std;
int a[105];
int main(){
    int n;
    cin>>n;
    int cnt=0,ans=0;
    for(int i=0;i<n;i++){
        cin>>a[i];
        if(a[i]==a[i-1]) cnt++;//相同就加上
        else{//不同就替换
            ans=max(cnt,ans);
            cnt=0;
            cnt++;
        }
    }
    ans=max(cnt,ans);//防止最后一组数是最长的
    cout<<ans<<endl;
    return 0;
}

还有另一种做法,就是将每一个数的个数加入数组内,再将数组中的最大值找出

#include<bits/stdc++.h>
using namespace std;
int k[2010];
int main(){
    int n;
    cin>>n;
    int ans=0;
    for(int i=0;i<n;i++){
        int a; cin>>a;
        k[a]++;//将数压进数组内
    }
    for(int i=0;i<2000;i++) ans=max(ans,k[i]);//找最大的数
    cout<<ans<<endl;//输出答案
    return 0;
}