Day 35 算法笔记之STL 6.1 vector的常见用法和详解

目录

1.Course List for Student

2.Student List for Course


1.Course List for Student

#include<cstdio>
#include<cctype>
#include<vector>
#include<algorithm>
using namespace std;
const int N = 40010;
const int M = 26*26*26*10+1;

vector<int> martix[M];

int get_num(char a[]){
	int num=0;
	for(int i=0;i<3;i++){
		num = num*26+(a[i]-'A');
	}
	num = num*10+(a[3]-'0');
	return num;
}

int main(){
	
	int n,m;
	char name[5];
	scanf("%d %d",&n,&m);
	int num;
	for(int i=0;i<m;i++){
		int course,stu;
		scanf("%d %d",&course,&stu);
		for(int j=0;j<stu;j++){
			scanf("%s",name);
			num = get_num(name);
			martix[num].push_back(course);
		}
	}
	
	for(int i=0;i<n;i++){
		scanf("%s",name);
		num = get_num(name);
		sort(martix[num].begin(),martix[num].end());
		printf("%s %d",name,martix[num].size());
		for(int j=0;j<martix[num].size();j++){
			printf("% d",martix[num][j]);
		}
		printf("\n");
	}
	
	return 0;
}

2.Student List for Course

#include<cstdio>
#include<cctype>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
const int N = 40010;
const int M = 4;

vector<int> martix[6];

char name[N][5];

bool cmp(int a,int b){
	return strcmp(name[a],name[b])<0;
}
int main(){
	
	int m,n;
	scanf("%d %d",&m,&n);
	for(int i=0;i<m;i++){
		int course_num;
		scanf("%s %d",name[i],&course_num);
		int course_id;
		for(int j=0;j<course_num;j++){
			scanf("%d",&course_id);
			martix[course_id].push_back(i);
		}
	}
	for(int i=0;i<n;i++){
		printf("%d %d\n",i+1,martix[i+1].size());
		sort(martix[i+1].begin(),martix[i+1].end(),cmp);
		for(int j=0;j<martix[i+1].size();j++){
			printf("%s\n",name[martix[i+1][j]]);
		}
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/aixiaoxiao13/article/details/121151531