問題描述 給定n個正整數(shù),找出它們中出現(xiàn)次數(shù)最多的數(shù)。如果這樣的數(shù)有多個,請輸出其中最小的一個。 輸入格式 輸入的第一行只有一個正整數(shù)n(1 ≤ n ≤ 1000),表示數(shù)字的個數(shù)。 輸入的第二行有n個整數(shù)s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相鄰的數(shù)用空格分隔。 輸出格式 輸出這n個次數(shù)中出現(xiàn)次數(shù)最多的數(shù)。如果這樣的數(shù)有多個,輸出其中最小的一個。 樣例輸入 6 10 1 10 20 30 20 樣例輸出 10
用數(shù)組存儲次數(shù),之前做過很容易有思路,一開始一直覺得沒問題,樣例也過了,交了之后判了60,很奇怪找了半天錯哪了,還是最值的賦值,我原來覺得只用一個變量找就行了,其實不是,一個變量記個數(shù),一個變量記對應(yīng)的數(shù)字,最終要的是個數(shù)最多時的數(shù)字。 以后做題,不能僅僅看樣例,要自己編一些合理的,畢竟考試的時候不是及時檢測,避免失誤。
#include <iostream>#include <stdio.h>#include<queue>#include<algorithm>#include <cmath>using namespace std;int num[10010];int main(){ int n; cin>>n; int m; int minn=10010,maxn=0; for(int i=0;i<n;i++) { cin>>m; num[m]++; if(m>maxn) { maxn=m; } if(m<minn) { minn=m; } } int mm=0; int number=0; for(int i=minn;i<=maxn;i++) { if(num[i]>number) { mm=i; number=num[i]; } } cout<<mm<<endl;}新聞熱點
疑難解答