C語言拯救計划Day4-5之求整數序列中出現次數最多的數


本題要求統計一個整型序列中出現次數最多的整數及其出現次數。

輸入格式:

輸入在一行中給出序列中整數個數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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM