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

 問題描述
  編寫一個程序,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數N也是由用戶輸入的,最多不會超過20。然後程序將對這個數組進行統計,把出現次數最多的那個數組元素值打印出來。如果有兩個元素值出現的次數相同,即並列第一,那麼只打印比較小的那個值。
  輸入格式:第一行是一個整數NN £ 20;接下來有N行,每一行表示一個整數,並且按照從小到大的順序排列。
  輸出格式:輸出只有一行,即出現次數最多的那個元素值。
輸入輸出樣例
樣例輸入
5
100
150
150
200
250
樣例輸出

150




其實這道題並不難   只是有兩組數據有點小坑人   寫了好久才想出來

輸入的n可能會小於等於0.做個限制條件就好

下面是代碼

#include<stdio.h>
int main()
{
int n,i,j=0,k,t=0;
int a[22][2]={0};
scanf("%d",&n);
if(n>0)
{
for(i=0;i<n;i++)
{
scanf("%d",&k);
if(i==0)
{
a[j][0]=k;
a[j][1]=1;
}
if(i!=0&&a[j][0]==k)
{
a[j][1]++;
if(a[t][1]<a[j][1])
{
t=j;
}
}
if(i!=0&&a[j][0]!=k)
{
j++;
a[j][0]=k;
a[j][1]=1;
}
}
printf("%d\n",a[t][0]);
}
return 0;
}

發佈了29 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章