首页 > 其他 > 详细

PAT 1047 Student List for Course (25分)

时间:2020-08-11 21:38:54      阅读:76      评论:0      收藏:0      [点我收藏+]

这道题和上道题就是把学生课程的存储查询,正反来一遍。

上一道题被警示要将名字用数字编号表示,不能用string等,那么就乖乖遵循,写vector。

这道题要注意的点是要给学生编号,并存在一个字符数组中。这样的好处首先是vector里存编号,排序的时候极大地节省了时间,其次是通过字符数组可以直接查询结果输出名字。

#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>

using namespace std;
char name[40010][5];
bool cmp (int a,int b){
    return strcmp(name[a],name[b])<0;

}
vector<int> v[2510];

int main(){
    int n,k;
    cin>>n>>k;
    int num,course;
    for(int i=0;i<n;i++){
        scanf("%s%d",name[i],&num);
        for(int j=0;j<num;j++){
            scanf("%d",&course);
            v[course].push_back(i);
        }
    }
    for(int i=1;i<k+1;i++){
        sort(v[i].begin(),v[i].end(),cmp);
        printf("%d %d\n",i,v[i].size());
        for(int j=0;j<v[i].size();j++){
            printf("%s\n",name[v[i][j]]);
        }

    }
    return 0;
}

 

PAT 1047 Student List for Course (25分)

原文:https://www.cnblogs.com/szh-blog/p/13482652.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!