前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >5 打印选课学生名单 (25分)

5 打印选课学生名单 (25分)

作者头像
韩旭051
发布于 2022-05-09 00:56:11
发布于 2022-05-09 00:56:11
41800
代码可运行
举报
文章被收录于专栏:刷题笔记刷题笔记
运行总次数:0
代码可运行

假设全校有最多40000名学生和最多2500门课程。现给出每个学生的选课清单,要求输出每门课的选课学生名单。

输入格式:

输入的第一行是两个正整数:N(≤40000),为全校学生总数;K(≤2500),为总课程数。此后N行,每行包括一个学生姓名(3个大写英文字母+1位数字)、一个正整数C(≤20)代表该生所选的课程门数、随后是C个课程编号。简单起见,课程从1到K编号。

输出格式:

顺序输出课程1到K的选课学生名单。格式为:对每一门课,首先在一行中输出课程编号和选课学生总数(之间用空格分隔),之后在第二行按字典序输出学生名单,每个学生名字占一行。

输入样例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
10 5
ZOE1 2 4 5
ANN0 3 5 2 1
BOB5 5 3 4 2 1 5
JOE4 1 2
JAY9 4 1 2 5 4
FRA8 3 4 2 5
DON2 2 4 5
AMY7 1 5
KAT3 3 5 4 2
LOR6 4 2 4 1 5

输出样例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 4
ANN0
BOB5
JAY9
LOR6
2 7
ANN0
BOB5
FRA8
JAY9
JOE4
KAT3
LOR6
3 1
BOB5
4 7
BOB5
DON2
FRA8
JAY9
KAT3
LOR6
ZOE1
5 9
AMY7
ANN0
BOB5
DON2
FRA8
JAY9
KAT3
LOR6
ZOE1

借鉴大佬代码

https://blog.csdn.net/qq_41231926/article/details/84932624

数据结构与算法题目集7-47——打印选课学生名单

先存进去,输出的时候字典排序然后输出即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
#include<algorithm>
#include<vector>
 
using namespace std;
 
int N, K;
vector<string> course[2501];
 
int main(){
	scanf("%d %d", &N, &K);
	for(int i = 0; i < N; i++){
		char name[5];
		scanf("%s", name);
		int C;
		scanf("%d", &C);
		for(int j = 0; j < C; j++){
			int num;
			scanf("%d", &num);
			course[num].push_back(name);
		}
	}
	for(int i = 1; i <= K; i++){
		printf("%d %d\n", i, course[i].size());
		sort(course[i].begin(), course[i].end());
		for(int j = 0; j < course[i].size(); j++){
			printf("%s\n", course[i][j].c_str());
		}
	}
	return 0;
}

自己做的时候就遇到了很多坑,比如cin cout 一定会超时就用scanf和printf,,但是使用了string 就一定会超时,用char就不会超时

用string,只能过一个测试样例,把string 的name换成 char name[5]读入,再转换成string存储,除最后一个测试样例都能过,最后一个还是超时。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
#include<map>
#include<set>
#include<string>
using namespace std;
int main(){
    int a,b;
    scanf("%d %d",&a,&b);
    map<int,set<string>> mp;
    for(int i=0;i<a;i++){
        char s[5];
        int k;
        int n;
        //s.resize(5);
        scanf("%s",s);
        scanf("%d",&k);
        while(k-->0){
            scanf("%d",&n);
            mp[n].insert(s);
        }
    }
    for(int i=1;i<=b;i++){
        if(mp[i].size()>=0){
            printf("%d %d\n",i,mp[i].size());
            for(auto it = mp[i].begin();it != mp[i].end(); it++){
                //cout<<*it<<endl;
                printf("%s\n",it->c_str());
            }
        }
    }
    return 0;
}

cout就会全挂

这样输出printf("%s\n",it->c_str());

能过前面五个但是超时不能避免

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PTA 数据结构与算法题目集(中文)7-47 打印选课学生名单 (25分) 题解
假设全校有最多40000名学生和最多2500门课程。现给出每个学生的选课清单,要求输出每门课的选课学生名单。
云微
2023/02/11
3160
pta 习题集5-18 打印学生选课清单
假设全校有最多40000名学生和最多2500门课程。现给出每门课的选课学生名单,要求输出每个前来查询的学生的选课清单。 输入格式: 输入的第一行是两个正整数:N(≤≤40000),为前来查询课表的学生总数;K(≤≤2500),为总课程数。此后顺序给出课程1到K的选课学生名单。格式为:对每一门课,首先在一行中输出课程编号(简单起见,课程从1到K编号)和选课学生总数(之间用空格分隔),之后在第二行给出学生名单,相邻两个学生名字用1个空格分隔。学生姓名由3个大写英文字母+1位数字组成。选课信息之后,在一行内
ShenduCC
2018/04/27
9470
打印学生选课清单 C++ 我爱map和set
假设全校有最多40000名学生和最多2500门课程。现给出每门课的选课学生名单,要求输出每个前来查询的学生的选课清单。
叶茂林
2023/07/30
1480
打印学生选课清单 C++ 我爱map和set
PAT 1039 Course List for Student (25分) 使用map(string, vector(int))
Zhejiang University has 40000 students and provides 2500 courses. Now given the student name lists of all the courses, you are supposed to output the registered course list for each student who comes for a query.
vivi
2020/07/14
4810
PAT (Advanced Level) Practice 1039 Course List for Student (25分)
Zhejiang University has 40000 students and provides 2500 courses. Now given the student name lists of all the courses, you are supposed to output the registered course list for each student who comes for a query.
glm233
2020/09/28
4900
【PAT甲级】Course List for Student
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
喜欢ctrl的cxk
2019/11/08
3060
1039. Course List for Student (25)「建议收藏」
Zhejiang University has 40000 students and provides 2500 courses. Now given the student name lists of all the courses, you are supposed to output the registered course list for each student who comes for a query.
全栈程序员站长
2022/07/10
1940
1039. Course List for Student (25)「建议收藏」
【PAT甲级】Student List for Course
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
喜欢ctrl的cxk
2019/11/08
3060
PTA 数据结构与算法题目集(中文) 7-49 打印学生选课清单 (25分)题解
假设全校有最多40000名学生和最多2500门课程。现给出每门课的选课学生名单,要求输出每个前来查询的学生的选课清单。
云微
2023/02/11
2410
PAT1047 Student List for Course (25分)避免运行超时(内存溢出)
Zhejiang University has 40,000 students and provides 2,500 courses. Now given the registered course list of each student, you are supposed to output the student name lists of all the courses.
vivi
2020/07/14
4910
PAT 1028 List Sorting (25分) 用char[],不要用string
Excel can sort records according to any column. Now you are supposed to imitate this function.
vivi
2020/07/14
3770
PAT 1028 List Sorting (25分) 用char[],不要用string
C++实现学生选课管理系统
链接:https://pan.baidu.com/s/1Wai-x43E826W3_ZBYA5VaA 提取码:tgdb 复制这段内容后打开百度网盘手机App,操作更方便哦
全栈程序员站长
2022/11/03
8240
C++实现学生选课管理系统
小码匠的编程江湖【第77式】:树形DP入门题:选课
目标驱动,打打鸡血,其实鸡血打多了往往就不管用了,但也习惯了。匠她娘还是挺会配合的,点个赞。
小码匠
2023/08/31
2310
小码匠的编程江湖【第77式】:树形DP入门题:选课
P2014「[CTSC1997]选课」
在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习。现在有 门功课,每门课有个学分,每门课有一门或没有直接先修课(若课程 是课程 的先修课即只有学完了课程 ,才能学习课程 )。一个学生要从这些课程里选择 门课程学习,问他能获得的最大学分是多少?
hotarugali
2022/03/02
9570
结构体管理、存储学生信息
Happiness and luck are at a price, and there is no free lunch!
小Bob来啦
2020/12/15
5300
结构体管理、存储学生信息
2018 团队设计天梯赛题解---华山论剑组
2018 年度的团队设计天梯赛前几天结束了。但是成绩真的是惨不忍睹。。。毕竟是团队的比赛,如果团队平均水平不高的话,单凭一个人,分再高也很难拉起来(当然,一个人能单挑一个队的大神除外)。
指点
2019/01/18
2.8K0
模拟EXCEL排序 c++ sort排序 多重排序 题解
题目链接: https://pta.patest.cn/pta/test/15/exam/4/question/864附录有strcmp函数使用以及多重sort的解析.
十四君
2019/11/28
1.2K0
看懂这一篇,C++也算入门了
呜呜周六要补班,只能趁着周六晚上连夜弄了一个。互动交流是我坚持下去的动力,希望可以帮到这位小伙伴哦。
用户9831583
2022/06/16
4900
看懂这一篇,C++也算入门了
PAT(甲级)1055.The World's Richest(25)
PAT 1055.The World’s Richest(25) Forbes magazine publishes every year its list of billionaires based on the annual ranking of the world’s wealthiest people. Now you are supposed to simulate this job, but concentrate only on the people in a certain range of ages. That is, given the net worths of N people, you must find the M richest people in a given range of their ages.
lexingsen
2022/02/25
2120
学生管理系统
大一时做的大作业,用的C语言编写,这个项目还是很经典的,可以锻炼到自己C语言的文件操作,并且了解C语言的结构化编程方式。
六月丶
2022/12/26
2.5K0
学生管理系统
推荐阅读
相关推荐
PTA 数据结构与算法题目集(中文)7-47 打印选课学生名单 (25分) 题解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验