【PAT甲级 vector string排序】1047 Student List for Course (25 分) 含别人的做法

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/sinat_42483341/article/details/100585736

题目

在这里插入图片描述
样例输出

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

题解1 C++

两个测试用例不通过

#include<iostream>
#include<algorithm>
#include<string>
#define STUSIZE 100
#define COUSIZE 100
using namespace std;
class Course {
public:
	string stu[STUSIZE];
	int size = 0;
};
int cmp(string str1, string str2) {
	return str1 < str2;
}
int main() {
	int totalStu, totalCou;
	cin >> totalStu >> totalCou;

	Course course[COUSIZE];

	for (int i = 0; i < totalStu; i++) {
		string stuName;
		int stuCouTotal;
		cin >> stuName >> stuCouTotal;
		for (int j = 0; j < stuCouTotal; j++) {
			int couNum;
			cin >> couNum;
			course[couNum].stu[course[couNum].size] = stuName;
			course[couNum].size++;
		}
	}

	for (int i = 0; i < COUSIZE; i++) {
		if (course[i].size != 0) {
			sort(course[i].stu, course[i].stu + course[i].size,cmp);
		}
	}

	for (int i = 0; i < COUSIZE; i++) {
		if (course[i].size != 0) {
			cout << i << " " << course[i].size << "\n";
			for (int j = 0; j < course[i].size; j++) {
				cout << course[i].stu[j] << "\n";
			}
		}
	}

	system("pause");
}

题解2 C++

#include<cstdio> 
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn = 2550;
vector<string>course[maxn];

int main() {
	int n, k;
	scanf("%d%d", &n, &k);
	for (int i = 1; i <= n; i++) {
		string name;
		int c, x;
		cin >> name >> c;
		for (int j = 0; j < c; j++) {
			scanf("%d", &x);
			course[x].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;
}

猜你喜欢

转载自blog.csdn.net/sinat_42483341/article/details/100585736