杭电1004
原创
©著作权归作者所有:来自51CTO博客作者待???的一天的原创作品,请联系作者获取转载授权,否则将追究法律责任
输出最多的颜色
Input
Input contains multiple test cases. Each test case starts with a number N (0 < N <= 1000) – the total number of balloons distributed. The next N lines contain one color each. The color of a balloon is a string of up to 15 lower-case letters.
A test case with N = 0 terminates the input and this test case is not to be processed.
Output
For each case, print the color of balloon for the most popular problem on a single line. It is guaranteed that there is a unique solution for each test case.
Sample Input
5
green
red
blue
red
red
3
pink
orange
pink
0
Sample Output
red
pink
解法1:
# include <stdio.h>
# include <string.h>
int main(){
char st[1005][20];
int i,j,k,n,len,t;
while(scanf("%d",&n),n){
for(i=0;i<n;i++){
scanf("%s",st[i]);
}
k = 0;
t = 0;
for(i=0;i<n;i++){
int j = i+1,cnt = 0 ;
for(;j<n;j++){
if(strcmp(st[i],st[j])==0){
cnt++;
}
}
if(cnt>t){
t = cnt;
k = i;
cnt = 0;
}
}
printf("%s\n",st[k]);
}
return 0;
}
解法2(map):
利用map(与java中treemap对应,,--- java的hashmap就是c++的unordered_map(无序)):
# include <iostream>
# include <map>
# include <string>
using namespace std;
int main(){
int n,i,j;
map<string,int> mapstr;
string str;
int max = 0;
string ch;
while(cin>>n,n){
max = 0;
while(n--){
cin>>str;
if(mapstr[str]==0){
mapstr[str] = 1;
}else{
mapstr[str]++;
}
//只所以这样处理是因为map排序
if(mapstr[str]>max){
max = mapstr[str];
ch = str;
}
}
cout<<ch<<endl;
mapstr.clear();
}
return 0;
}