本題要求統計一個整型序列中出現次數最多的整數及其出現次數。
輸入格式:
輸入在一行中給出序列中整數個數N(0<N≤1000),以及N個整數。數字間以空格分隔。
輸出格式:
在一行中輸出出現次數最多的整數及其出現次數,數字間以空格分隔。題目保證這樣的數字是唯一的。
輸入樣例:
10 3 2 -1 5 3 4 3 0 3 2
輸出樣例:
3 4
1 #include<stdio.h> 2 #define N 1000 3 //思路:使用兩個數組,a[i] b[i],a[i]保存數據,b[i]保存每個數據出現的次數 4 // 然后找到出現次數最多的b[i],並且記錄下其下標i,從而找到最大次數對應的數字。 5 int main() 6 { 7 int i, j, n; 8 int a[N]; 9 int b[N] = {0}; 10 int max; 11 int index = 0; 12 scanf("%d", &n); 13 for (i = 0; i < n; i++) 14 { 15 scanf("%d", &a[i]); 16 } 17 ///用雙循環拿a[i]元素和a數組的每一個數比較(包括a[i]本身) 18 for (i = 0; i < n; i++) //記錄每個數字出現的次數,每個數字至少出現一次,使用數組b[i]保存下來次數。 19 { 20 for (j = 0; j < n; j++) 21 { 22 if (a[i] == a[j]) 23 { 24 b[i]++;//表示第i個元素出現的次數 25 } 26 } 27 } 28 max = b[0]; 29 for (i = 1; i < n; i++) //查找最大的次數,記住最大次數的下標,使用該下標找到出現次數最大的數字。 30 { 31 if (max < b[i]) 32 { 33 max = b[i]; 34 index = i; 35 } 36 } 37 printf("%d %d\n",a[index], max);///輸出出現最多的數和次數 38 return 0; 39 }
思路和之前有兩道題很類似,做法也很經典的,經常會用到的
注意點:
如何統計每個數的出現次數並找到最大出現次數?
1.開一個和a一樣大的數組用來記錄次數,通過一個雙重循環(相當於復制了一遍a數組),將a數組中的每一個數字和復制的a數組的數依次比較,如果遇到相同的 則次數加1
這樣就可以統計第i個數出現的次數是多少
2.最大次數--類似求數組中最大值的做法
先假設最大值下標為0,然后用循環if語句找出b數組中的最大值,找出最大值的下標賦值於index