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

版权声明:我的GitHub:https://github.com/617076674。真诚求星! https://blog.csdn.net/qq_41231926/article/details/84932624

我的数据结构与算法题目集代码仓:https://github.com/617076674/Data-structure-and-algorithm-topic-set

原题链接:https://pintia.cn/problem-sets/15/problems/894

题目描述:

知识点:vector集合的应用、排序

思路:用vector集合保存每门课程对应的学生

一开始我是用set集合保存每门课程对应的学生数量,这样就省去了排序的过程,但这样做会导致测试点5超时。不如先用vector集合存储每门课程对应的学生,再进行排序来得快。

时间复杂度和空间复杂度均与每门课程对应的学生数量有关。

C++代码:

#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;
}

C++解题报告:

猜你喜欢

转载自blog.csdn.net/qq_41231926/article/details/84932624