E - Let the Balloon Rise ,----------此题是求出现次数最多的气球,//要应用map<string,int>这种结构。通过输入的字符串来计数,按字符串求最大。
Y - Ignatius and the Princess IV----------此题与求气球无异,只要数字出现次数>=(n+1)/2;便可以。应用map<int,int >计数即可。
E - Let the Balloon Rise
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main()
{
map<string,int> balloon;
int n;
string a;
while(cin >> n&& n!=0)
{
balloon.clear();
while(n--)
{
cin >> a;
balloon[a]++;
}
map<string,int>::iterator it;
int max=-100;string maxcolor;
for (it=balloon.begin();it!=balloon.end();it++)
{
if((*it).second>max)
{
max=(*it).second;
maxcolor=(*it).first;
}
}
cout<<maxcolor<<endl;
}
return 0;
}
//可以熟悉熟悉对迭代器的使用 定义:map<string,int>::iterator it;
遍历map:for(it=mymap.begin();it!=mymap.end();it++)
{
if((*it).second>x)
t=(*it).first;
}
Y - Ignatius and the Princess IV
#include<iostream>
#include<string>
#include<string.h>
#include<cstdio>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
int n;
map<int,int>maps;
map<int,int> ::iterator it;
while(~scanf("%d", &n))
{
maps.clear();
for(int i=1;i<=n;i++)
{
int t;
scanf("%d",&t);
maps[t]++;
}
int ans;
for (it=maps.begin();it!=maps.end();it++)
{
if((*it).second>=(n+1)/2)
{
ans=(*it).first;
break;
}
}
printf("%d\n",ans);
}
return 0;
}