1. 程式人生 > >CCF CSP 201312-1 出現次數最多的數

CCF CSP 201312-1 出現次數最多的數

使用 col 空格 nbsp lan 題解 stdio.h con namespace

CCF計算機職業資格認證考試題解系列文章為meelo原創,請務必以鏈接形式註明本文地址

CCF CSP 201312-1 出現次數最多的數

問題描述

  給定n個正整數,找出它們中出現次數最多的數。如果這樣的數有多個,請輸出其中最小的一個。

輸入格式

  輸入的第一行只有一個正整數n(1 ≤ n ≤ 1000),表示數字的個數。
  輸入的第二行有n個整數s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相鄰的數用空格分隔。

輸出格式

  輸出這n個次數中出現次數最多的數。如果這樣的數有多個,輸出其中最小的一個。

樣例輸入

6
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 出現次數最多的數