本文共 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;}
转载地址:http://onyg.baihongyu.com/