HDU 1004
程序员文章站
2024-03-17 08:44:10
...
题目描述:
很简单,要求输出输入最多的颜色,我们可以使用一个string数组来存储输入的数据,然后进行比较即可,我自己写的比较直接,代码如下:
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
int main()
{
int n,s;
int maxN=0;
string color[1000];
while(cin>>n){
if(n==0)
break;
for(int i=0;i<n;i++){
cin>>color[i];
}
int ans=0;
int k;
for(k=0;k<n;k++){
string a=color[k];
int number=0;
for(int j=0;j<n;){
if(color[j]==a){
number++;
j++;
}else{
j++;
}
}
if(number>maxN){
maxN=number;
ans=k;
}
}
cout<<color[ans]<<endl;
}
return 0;
}
/*
5
green
red
blue
red
red
3
pink
orange
pink
0
*/
然后在网上看到别人用map实现的代码,更加简单和巧妙!!!代码如下:
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main(){
map<string,int> ballen;
int n;
string str;
while(cin>>n && n>0){
ballen.clear();
while(n--){
cin>>str;
ballen[str]++;
}
int max=0;
string maxColor;
map<string,int>::iterator iter;
for(iter=ballen.begin();iter!=ballen.end();iter++){
if(iter->second>max){
max=(*iter).second;
maxColor=(*iter).first;
}
}
cout<<maxColor<<endl;
}
}
详见Map实现