[编程题]Course List for Student (25)
发布日期:2021-05-07 23:12:05 浏览次数:11 分类:原创文章

本文共 1298 字,大约阅读时间需要 4 分钟。

关键词:vector , map
试题链接:
https://www.nowcoder.com/questionTerminal/a6e370ac55fc4bd49d0bb62710e35868
问题描述:在这里插入图片描述
在这里插入图片描述
思路:
这道题的核心就是变长数组vector的应用(以及map的应用),做题之前应当好好考虑一下vector该用在存储什么变量是最合适的,考虑它“长度可变”的特性让自己结题的过程变得更加简单。

备注:
使用algorithm中的sort函数对vector中的数据进行排序时,应当用到begin()和end()函数,而不是像对普通数组那样直接(头指针,头指针+数组长度)。

解决方案:

#include<iostream>#include<vector>#include<string>#include<algorithm>#include<map>using namespace std;int main(){       int courseNum;    int studentNum;    map<string,vector<int> > stumap;    int course,num;    char name[5];        cin>>studentNum>>courseNum;    for(int i=0;i<courseNum;i++){           cin>>course>>num; //课程号和选该课程的学生人数        //第一次出现该学生的名字        for(int j=0;j<num;j++){               cin>>name;            if(stumap.count(name)==0){                   vector<int> list;                list.push_back(course);                stumap[name]=list;            //非第一次出现学生名字            }else{                   stumap[name].push_back(course);            }        }    }    //学生顺序    for(int i=0;i<studentNum;i++){           cin>>name;        cout<<name<<" "<<stumap[name].size()<<" ";        //给课程号排序        sort(stumap[name].begin(),stumap[name].end());        for(int j=0;j<stumap[name].size();j++){               cout<<stumap[name][j]<<" ";        }        cout<<endl;    }     return 0;}
上一篇:[编程题]Student List for Course (25)
下一篇:[编程题]最大公约数和最小公倍数

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月12日 14时42分14秒