1. 程式人生 > >藍橋杯 演算法訓練 出現次數最多的整數

藍橋杯 演算法訓練 出現次數最多的整數

這題思路比較簡單,易錯的點是n能取到小於1的數,而n<=0時不用輸出,這一點不知道的話容易把問題想複雜。

還有幾點關於本題:

1,沒有特判n<=0這種情況,其它都對的能得80分,沒過6,7組測試。

2,這題資料沒有超int,int也可以過,但用long long 會0ms過。

3,這題有人用字串存資料,過了,但不是因為它給的資料過大,而是因為,n<=0時這種程式碼輸不出東西來,恰好滿足題意過了。

以上僅供參考,如果有錯誤,歡迎評論。

#include<stdio.h>
#define INF 0x3f3f3f3f
int a[30];
int main()
{
    int n,sum=0,maxx=0;
    int ans=0;
    scanf("%d",&n);
    if(n<=0) return 0;//坑了許多人吧,n<=0時不輸出
    a[0]=-INF;
    int i;
    for(i=1;i<=n;++i)
    {
        scanf("%d",a+i);
        if(a[i]!=a[i-1])
        {
            if(sum>maxx)
            {
                maxx=sum;
                ans=a[i-1];
            }
            sum=1;
        }
        else
            ++sum;
    }
    if(sum>maxx)
    {
        maxx=sum;
        ans=a[i-1];
    }
    printf("%d\n",ans);
    return 0;
}