博客
关于我
[编程题]Course List for Student (25)
阅读量:357 次
发布时间:2019-03-04

本文共 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/

你可能感兴趣的文章
Java笔记:单链表
查看>>
Java基础题:小根堆为8,15,10,21,34,16,12,删除关键字8之后需重建堆,需要的比较次数为?
查看>>
phthon基本语法——温习
查看>>
sleep、wait、yield、join——简介
查看>>
web项目配置
查看>>
VTK:相互作用之KeypressEvents
查看>>
VTK:相互作用之MouseEventsObserver
查看>>
VTK:相互作用之PickableOff
查看>>
VTK:相互作用之Picking
查看>>
VTK:Medical之MedicalDemo2
查看>>
libfacedetection库的配置及基本使用——内涵(cmake编译libfacedetection库)
查看>>
VS配置属性表,保存Opencv配置信息
查看>>
c语言(基本数据类型)实参与形参传值 用汇编理解
查看>>
输入端噪声容限
查看>>
vue——this.$route 与 this.$router
查看>>
基于单片机可控音乐流水灯控制设计-全套资料
查看>>
基于单片机简易信号误差分析设计-全套资料
查看>>
基于单片机简易洗衣机系统仿真设计-全套资料
查看>>
基于单片机简易脉搏测量仪系统设计-毕设课设资料
查看>>
基于单片机八层电梯系统控制设计-毕设课设资料
查看>>