hdu1263 二重map

题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1263

这是第二遍做这个题啦,第一次做的时候还没有接触map,就用的结构体排序,当时还觉得挺厉害的,后来知道了map看到了大神用双重map做这道题感觉自己low暴了 然后就模仿这写了一哈。看起来蛮简单的感觉其实还蛮难的,因为以前一直用的C的scanf之类的,第一次用cin>>和cout<<。

第一个map  map<string,int>b ;第二个  map<string,<map<string,int> > a; 然后用迭代器就好了,对了 map会自动为你调整顺序的。

代码如下

#include <iostream>
#include<stdio.h>
#include<algorithm>
#include<map>
#include<iterator>
#include<string>
using namespace std;
map<string,map<string,int> > a;
map<string,int> b;
int main()
{
    int  T;
    scanf("%d",&T);
    while(T--)
    {
        a.clear();
        b.clear();
        int t,ge;
        char ch[100],typ[100];
        scanf("%d",&t);
        while(t--)
        {
        scanf("%s%s%d",typ,ch,&ge);
        a[ch][typ]+=ge;
        }
        map<string, map<string,int> >::iterator t1;
        map<string,int>::iterator t2;
        for(t1=a.begin();t1!=a.end();t1++)
        {
            cout<<t1->first<<endl;
            b=t1->second;
            for(t2=b.begin();t2!=b.end();t2++)
            {
                cout<<"   |----"<<t2->first<<"("<<t2->second<<")"<<endl;
            }

        }

         if(T) printf("\n");

        }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值