PAT 1047. Student List for Course

来源:互联网 发布:模拟退火算法模型 编辑:程序博客网 时间:2024/04/26 14:42

题目http://pat.zju.edu.cn/contests/pat-a-practise/1047


题意:N个学生,K门课。给出每个学生被接受的课程号。要求输出每门课程所接受的学生姓名,按字典序排列。


思路:字符串与数字的映射。算法不唯一,这里用vector<string> v 建立课程与学生姓名的映射关系。


代码

#include<cstdio>#include<cstring>#include<string>#include<vector>#include<algorithm>using namespace std;vector<string> v[2501];int main(){int n,k,i,j,m,id;char name[10];string s;scanf("%d%d",&n,&k);for(i=0;i<n;i++){    scanf("%s",name);scanf("%d",&m);s=string(name);                 //没有这一步转换,若直接v[id].push_back(name),最后一组数据超时!!!;for(j=0;j<m;j++){    scanf("%d",&id);v[id].push_back(s);}}for(i=1;i<=k;i++){int len=v[i].size();printf("%d %d\n",i,len);sort(v[i].begin(),v[i].end());for(j=0;j<len;j++)printf("%s\n",v[i][j].c_str());}return 0;}


0 0