题目描述



分析:
给出每个学生的选课情况,输出每门课选的人的名字,对于学生的名字采用char 的二维数组来存储,而对于每门课选的人则采用vector数组来存,vector里面存每个选这门课的学生的名字的序号。
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
char name[40005][5];
vector<int> course[2505];
bool cmp(int a,int b){
return strcmp(name[a],name[b])<0;
}
int main(){
int stunum,coursenum,c;
int num;
scanf("%d %d",&stunum,&coursenum);
for(int i=0;i<stunum;i++){
scanf("%s %d",name[i],&num);
for(int j=0;j<num;j++){
scanf("%d",&c);
course[c].push_back(i);
}
}
for(int j=1;j<=coursenum;j++){
printf("%d %d\n",j,course[j].size());
sort(course[j].begin(),course[j].end(),cmp);
for(int i=0;i<course[j].size();i++){
printf("%s\n",name[course[j][i]]);
}
}
return 0;
}
该代码实现了一个课程选人系统,使用二维字符数组存储学生名字,用vector存储每门课程选课的学生序号。程序读取学生数、课程数及选课信息,然后对每门课程选课的学生进行排序并输出。排序依据是学生姓名的字典序。
2377

被折叠的 条评论
为什么被折叠?



