Let the Balloon Rise及map浅析

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的函数

猜你喜欢

转载自blog.csdn.net/malloch/article/details/105905320