一道复杂一点的数据处理,个人觉得全题最大的坑点是输出时候的四个空格和四个杠杆
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct s{
char chan[81];
char type[81];
int coun;
}a[10000];
bool cmp(s a,s b)
{
if(strcmp(a.chan,b.chan)) return strcmp(a.chan,b.chan)<0;
return strcmp(a.type,b.type)<0;
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int m,j=0;
scanf("%d ",&m);
int i,flag=0;
for(j=0;j<m;j++)
{
scanf("%s%s%d",a[flag].type,a[flag].chan,&a[flag].coun);
for(i=0;i<flag;i++)
{
if((strcmp(a[i].type,a[flag].type)==0)&&((strcmp(a[i].chan,a[flag].chan)==0)))
{a[i].coun+=a[flag].coun;break;}
}
if(i>=flag)
{
flag++;
}
}
sort(a,a+flag,cmp);
for(i=0;i<flag;)
{
printf("%s\n",a[i].chan);
for(j=i;j<flag&&!strcmp(a[i].chan,a[j].chan);j++)
{
printf(" |----%s(%d)\n",a[j].type,a[j].coun);
}
i=j;
}
if(n) printf("\n");
}
return 0;
}
/*
1
5
apple shandong 3
pineapple guangdong 1
sugarcane guangdong 1
pineapple guangdong 3
pineapple guangdong 1
*/