• A1047 Student List for Course (25 分)


    一、技术总结

    1. 首先题目要看清湖,提出的条件很关键,比如for循环的终止条件,特别注意。
    2. 还有这个题目主要考虑到vector的使用,还有注意一定要加上using namespace std;
    3. 输出格式,题目中如果没有要求什么最后一行不能有空格什么的,就不要画蛇添足,按照正常的换行就行。
    4. 这里采用的是先使用二维字符串数组存储名字,然后名字也有编号,使用这个编号来记录每个课程中选取的学生,巧妙的避免了要记录下字符串的尴尬局面。然后再开辟一个vector容器来记录课程中选课学生的编号,最后排序即可。
    5. 如果很大的字符串存储,不要使用string,要使用char数组,可以是二维的。然后如果要比较字符串的大小,按字母从小到大使用cmp如下:
    bool cmp(int a, int b){
        //这里是按字符串从小到大,如果相反改变下面中小于号为大于号即可,同时stu是提前声明的全局变量二维字符串数组
        return strcmp(stu[a], stu[b]) < 0;
    }
    

    二、参考代码

    #include<iostream>
    #include<vector>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    const int N = 40010;
    const int K = 2510;
    char stu[N][5];
    vector<int> q[K];
    bool cmp(int a, int b){
    	return strcmp(stu[a], stu[b]) < 0;
    }
    int main(){
    	int n,k;
    	scanf("%d%d", &n, &k);
    	int num = 0;
    	int course = 0;
    	for(int i = 0; i < n; i++){
    		scanf("%s %d", stu[i], &num);
    		for(int j = 0; j < num; j++){
    			scanf("%d", &course);
    			q[course].push_back(i);
    		}
    	}
    	for(int i = 1; i <= k; i++){
    		sort(q[i].begin(), q[i].end(), cmp);
    		printf("%d %d
    ", i, q[i].size());
    		for(int j = 0; j < q[i].size(); j++){
    			printf("%s
    ", stu[q[i][j]]);
    		}	
    	}
    	return 0;
    }
    
    作者:睿晞
    身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
    劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
    曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    forkjoinpool
    json path
    如何处理json字符串
    ios如何快速转型安卓开发-专题3
    ios如何快速转型安卓开发-专题1
    framework创建及接入方式
    Cocoapods包管理
    cf 1102 B
    夜深人静写题解--杭电第五场
    夜深人静写题解--牛客第六场
  • 原文地址:https://www.cnblogs.com/tsruixi/p/11915668.html
Copyright © 2020-2023  润新知