Let the Balloon Rise:
这道题主要是对气球的个数进行统计,并且找出其中个数最多的气球的颜色。
这道题使用map函数就可以非常轻松的实现,利用将颜色定义为map中的key,利用循环统计key出现的次数来对其个数进行统计。
难点是如何输出最大的个数:
由于map函数自定义内部是有小到大的排序,所以我们通过迭代器定义m,p俩个来进行最大值的存储。
#include<cstdio>
#include <iostream>
#include<map>
#include <vector>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
int n,i;
int a[1010];
while(scanf("%d",&n)!=EOF)
{
char ball[20]={
0};
map<string,int>mp;
if(n==0)
break;
for(i=0;i<n;i++)
{
scanf("%s",&ball);
mp[ball]++;
}
map<string,int>::iterator p,m;
p=m=mp.begin();
for (; p!=mp.end(); p++)
if(p->second > m->second)
m=p;
cout<<m->first<<endl;
}
return 0;
}
注(map的基本用法):
1.begin() 返回指向map头部的迭代器
2.clear() 删除所有元素
3.count() 返回指定元素出现的次数
4.empty() 如果map为空则返回true
5.end() 返回指向map末尾的迭代器
6.equal_range() 返回特殊条目的迭代器对
7.erase() 删除一个元素
8.find() 查找一个元素
9.get_allocator() 返回map的配置器
10.insert() 插入元素
11.key_comp() 返回比较元素key的函数
12.lower_bound() 返回键值>=给定元素的第一个位置
13.max_size() 返回可以容纳的最大元素个数
14.rbegin() 返回一个指向map尾部的逆向迭代器
15.rend() 返回一个指向map头部的逆向迭代器
16.size() 返回map中元素的个数
17.swap() 交换两个map
18.upper_bound() 返回键值>给定元素的第一个位置
19.value_comp() 返回比较元素value的函数