建立二维数组,利用下标来解决。
#include<bits/stdc++.h>
using namespace std;
struct no
{
char name[15];
}a[35005][2005];
char st[15];
int cou[2500];
int cmp(no a,no b)
{
return strcmp(a.name,b.name)<0;
}
int main()
{
int n,m,i,j,k,t;
memset(cou,0,sizeof(cou));
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%s",st);
scanf("%d",&k);
for(j=1;j<=k;j++)
{
scanf("%d",&t);
strcpy(a[t][++cou[t]].name,st);
}
}
for(i=1;i<=m;i++)
{
printf("%d %d\n",i,cou[i]);
sort(a[i]+1,a[i]+cou[i]+1,cmp);
for(j=1;j<=cou[i];j++)
{
printf("%s\n",a[i][j].name);
}
}
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-1304390.html