CSU2179: 找眾數
阿新 • • 發佈:2018-11-14
put while printf pro rst class include 一個 highlight
Description
由文件給出N個1到30000間無序數正整數,其中1≤N≤10000,同一個正整數可能會出現多次,出現次數最多的整數稱為眾數。求出它的眾數及它出現的次數。
Input
輸入文件第一行是正整數的個數N,第二行開始為N個正整數。
Output
輸出文件有若幹行,每行兩個數,第1個是眾數,第2個是眾數出現的次數。
Sample Input
12
2 4 2 3 2 5 3 7 2 3 4 3
Sample Output
2 4 3 4
題意:很好理解,就是找到出現次數最多的個數和對應的值。桶排一下就行。我這利用map的思想,先把所有出現的值和對應的個數存儲起來,然後遍歷找到最大的次數,再遍歷一下找到其值就可以了。
#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <algorithm> #include <map> using namespace std; const int maxn=1005; int n,T; map<int,int>m; int main() { while(scanf("%d",&n)!=EOF) { int x; while(n--) { scanf("%d",&x); if(m.count(x)==0) m[x]=1; else m[x]++; } int ans=0; map<int,int>::iterator iter; iter=m.begin(); while(iter!=m.end()) { ans=max(ans,iter->second); iter++; } iter=m.begin(); while(iter!=m.end()) { if(ans==iter->second) printf("%d %d\n",iter->first,iter->second); iter++; } } return 0; } /********************************************************************** Problem: 2179 User: therang Language: C++ Result: AC Time:8 ms Memory:2424 kb **********************************************************************/
CSU2179: 找眾數