
[编程题]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;}
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月12日 14时42分14秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
5.redo undo
2019-03-05
《JVM的内存》
2019-03-05
c++中istringstream及ostringstream超详细说明
2019-03-05
c++中ifstream及ofstream超详细说明
2019-03-05
c++中endl操作符以及它的兄弟们
2019-03-05
c++中explicit和mutable关键字探究
2019-03-05
c语言结构体字节对齐详解
2019-03-05
linux c/c++面试知识点整理(八)
2019-03-05
epoll的基本使用
2019-03-05
linux网络编程系列(十二)--滑动窗口、拥塞控制、断线重连机制
2019-03-05
c++11&14-编译
2019-03-05
Docker部署RabbitMQ集群
2019-03-05
Deep residual learning for image recognition
2019-03-05
IO控制方式
2019-03-05
IO控制器
2019-03-05
Java 异常
2019-03-05
Linux Java “没有那个文件或目录“
2019-03-05
BP神经网络学习--MATLAB源码详细注释
2019-03-05
LeetCode122.买卖股票的最佳时机2Golang版
2019-03-05