CCF CSP 201312-1 出現次數最多的數
阿新 • • 發佈:2017-10-13
使用 col 空格 nbsp lan 題解 stdio.h con namespace
輸入的第二行有n個整數s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相鄰的數用空格分隔。
6
10 1 10 20 30 20
CCF計算機職業資格認證考試題解系列文章為meelo原創,請務必以鏈接形式註明本文地址
CCF CSP 201312-1 出現次數最多的數
問題描述
給定n個正整數,找出它們中出現次數最多的數。如果這樣的數有多個,請輸出其中最小的一個。輸入格式
輸入的第一行只有一個正整數n(1 ≤ n ≤ 1000),表示數字的個數。輸入的第二行有n個整數s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相鄰的數用空格分隔。
輸出格式
輸出這n個次數中出現次數最多的數。如果這樣的數有多個,輸出其中最小的一個。樣例輸入
10 1 10 20 30 20
樣例輸出
10解析
使用一個數據結構計數,由於數的範圍為[1,10000],可以開一個數組,也可以使用map計數。
每輸入一個數更新最優結果即可。
代碼
C++
#include <stdio.h> #include <map> using namespace std; int main() { int N; scanf("%d", &N); map<int,int> cnt; int maxCnt = 0; int maxVal = 0; for(int n=0; n<N; n++) { int t; scanf("%d", &t); cnt[t]++; if(cnt[t]>maxCnt || cnt[t]==maxCnt && t<maxVal) { maxCnt = cnt[t]; maxVal = t; } } printf("%d", maxVal); }
CCF CSP 201312-1 出現次數最多的數