zcmu1773: Mode【簡單】
阿新 • • 發佈:2018-12-15
1773: Mode
Description
give you a number of n series, in which a number of more than n / 2 times , you should find out that the number (n<=500000,x<=10^19)
Input
The first line is a positive integer n. The second line of n positive integers separated by spaces.
Output
A Positive integer on a line indicates that number
Sample Input
5 3 2 3 1 3
Sample Output
3
解題思路:這題第一想到就是用map做,但是資料用點大,我就用string來輸入資料,但是自己在這裡犯了個錯誤,就是map沒有clear(),導致答案錯誤,這不應該。
#include<bits/stdc++.h> using namespace std; map<string,int>mp; int main(void) { int n; while(~scanf("%d",&n)) { getchar(); mp.clear(); int t=n/2; string s,ans="-1"; for(int i=0;i<n;i++) { cin>>s; mp[s]++; if(mp[s]>t) ans=s; } if(ans!="-1") cout<<ans<<endl; } return 0; }