第一遍刷pat
题目思路
hash算法将学生名字转化成一个int值,可以想到这个名字的格式可以看作:26进制混10进制
利用vector容器,会更节省时间
我的憨憨程序
#include<bits/stdc++.h>
#define maxm 26*26*26*10+10
using namespace std;
vector <int> stu[maxm];
int cal(char *name)
{
int index=0;
for(int i=0;i<3;i++)
index=index*26+(name[i]-'A');
index=index*10+name[3]-'0';
return index;
}
int main()
{
int N,K;
scanf("%d%d",&N,&K);
for(int i=0;i<K;i++)
{
int a,b;
scanf("%d%d",&a,&b);
for(int j=0;j<b;j++)
{
char name[5]={0};
scanf("%s",name);
int index=cal(name);
stu[index].push_back(a);
}
}
for(int i=0;i<N;i++)
{
char name[5]={0};
scanf("%s",name);
int index=cal(name);
sort(stu[index].begin(),stu[index].end());
printf("%s %d",name,stu[index].size());
for(int j=0;j<stu[index].size();j++)
printf(" %d",stu[index][j]);
printf("\n");
}
}