
[编程题]Student List for Course (25)
发布日期:2021-05-07 23:12:06
浏览次数:17
分类:原创文章
本文共 1390 字,大约阅读时间需要 4 分钟。
关键词:vector , map
试题链接:
https://www.nowcoder.com/questionTerminal/e9482512572944199d1babbcdf567b3d
问题描述:
思路:
这道题的核心就是变长数组vector的应用(以及map的应用),做题之前应当好好考虑一下vector该用在存储什么变量是最合适的,考虑它“长度可变”的特性让自己结题的过程变得更加简单。
在Course List for Student(https://blog.csdn.net/qq_45642765/article/details/116152924)
的基础上稍微做一点修改即可。
备注:
map迭代器访问元素使用时容易出现一些错误,iter->second指向的就是当前iter指针指向的map元素的值,不要和数组形访问map元素混淆了。
解决方案:
#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;}
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月13日 00时14分18秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Numpy学习】np.count_nonzero()用法解析
2021-05-08
Scala集合-数组、元组
2021-05-08
Flink Standalone集群安装和部署
2021-05-08
JAVA网络爬虫01-http client爬取网络内容
2021-05-08
04 程序流程控制
2021-05-08
java并发编程(1)
2021-05-08
C++&&STL
2021-05-08
双指针算法思想
2021-05-08
分组背包问题
2021-05-08
子集(LeetCode 78)
2021-05-08
旋转数组的最小值
2021-05-08
1004 Counting Leaves (30分)
2021-05-08
1093 Count PAT‘s (25分) 含DP做法
2021-05-08
一篇解决JMM与volatile详解(二)
2021-05-08
数据结构之数组与经典面试题(二)
2021-05-08
无锁并发框架-Disruptor的使用(二)
2021-05-08
Android wm命令
2021-05-08
boot.img 解包与打包
2021-05-08
Android4.4 平板背光设置
2021-05-08
递归复习--二叉搜索树
2021-05-08