hdu1263水果;
http://acm.hdu.edu.cn/showproblem.php?pid=1263
题目大意;
输入;按水果名 生产地 数量;
输出;按字典序先输出生产地,再输出在该生产地水果的量;按水果名的字典序排列;
先看下map的嵌套定义是什么样子吧;
map<string , map<string,int> > mp;
map<string , int>::iterator itf;
map<string , map<string , int> >::iterator it;
还要注意的是;在输出的时候注意级别的搭配;
for(it=mp.begin(); it != mp.end(); it++)
{
cout<<(*it).first<<endl;
for(itf=(*it).second.begin();itf != (*it).second.end();itf++)
{//注意级别搭配;
cout<<" |----"<<(*itf).first<<"("<<(*itf).second<<")"<<endl;
}
}
看代码;
#include<stdio.h>
#include<string>
#include<iostream>
#include<map>
using namespace std;
struct furit
{
string name;
string place;
int num;
}sg;
int main()
{
int t,n,i;
scanf("%d",&t);
while(t--)
{
map<string , map<string,int> > mp;
map<string , int>::iterator itf;
map<string , map<string , int> >::iterator it;
scanf("%d",&n);
for(i = 0; i < n; i++)
{
cin>>sg.name>>sg.place>>sg.num;
mp[sg.place][sg.name] += sg.num;
}
for(it=mp.begin(); it != mp.end(); it++)
{
cout<<(*it).first<<endl;
for(itf=(*it).second.begin();itf != (*it).second.end();itf++)
{
cout<<" |----"<<(*itf).first<<"("<<(*itf).second<<")"<<endl;
}
}
if(t)printf("\n");
}
}