HDU-1263 水果(双map实现)
题目链接:HDU-1263
题目大意:数据整合排版
解题思路:使用双map实现,即map<string, map<string, int> >的形式 注意后面的>>一定要分开写 不然会判别为位运算 由于输出以产地为第一级,所以map里面的第一个string即储存地名 后面的map储存水果名称和数量信息
map里的key是实现排序的 所以不需要我们手动排序 注意输出格式就好 这个输出格式是真的恶心 整整错了4次
代码块:
#include<iostream>
#include<cstdio>
#include<map>
#include<vector>
#include<string>
using namespace std;
/*
I - 水果
*/
int main(){
map<string, map<string, int> > ma;
map<string, map<string, int> >::iterator its;
map<string, int>::iterator it;
int n;
scanf("%d",&n);
while(n--){
int m;
scanf("%d",&m);
string s1,s2;
int num;
while(m--){
cin>>s1;
cin>>s2;
cin>>num;
ma[s2][s1] += num;
}
for(its = ma.begin(); its != ma.end(); its++){
cout<<its->first<<endl;
for(it = its->second.begin(); it != its->second.end(); it++){
cout <<" |----" << it->first<< "("<< it->second<< ")"<<endl;
}
}
ma.clear();
if( n!= 0)cout<<endl;
}
return 0;
}