例题:
eg1:http://acm.hdu.edu.cn/showproblem.php?pid=1004
AC代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e3 + 7;
map<string, int> ballon;
string color, maxcolor;
int n, mmax;
int main(){
while(cin >> n){
if(n == 0) break;
ballon.clear();
for (int i = 1; i <= n; ++i){
cin >> color;
ballon[color]++;
}
mmax = 0;
for (map<string, int> :: iterator it = ballon.begin(); it != ballon.end(); ++it){
if(it -> second > mmax){
maxcolor = it -> first;
mmax = it -> second;
}
}
cout << maxcolor << endl;
}
return 0;
}
本题也可以利用sort对字符串进行排序来写。
AC代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e3 + 7;
int n, num[N];
string s[N];
int main(){
while(cin >> n){
if(n == 0) break;
for (int i = 1; i <= n; ++ i){
cin >> s[i];
}
sort(s, s + n);
for (int i = 1; i <= n; ++i){
num[i] = 1;
}
for (int i = 1; i <= n; ++i){
if(s[i] == s[i - 1]){
num[i] += num[i - 1];
}
}
int mmax = 1;
for (int i = 1; i <= n; ++i){
if(num[mmax] < num[i]) mmax = i;
}
cout << s[mmax] << endl;
}
return 0;
}