题目描述
您要设计一个学籍管理系统,最开始学籍数据是空的,然后该系统能够支持下面的操作(不超过 10^5105 条):
- 插入与修改,格式1 NAME SCORE:在系统中插入姓名为 NAME(由字母和数字组成不超过 20 个字符的字符串,区分大小写) ,分数为 texttt{SCORE}(0<texttt{SCORE}<2^{31}
- 查询,格式
2 NAME
:在系统中查询姓名为 NAME 的学生的成绩。如果没能找到这名学生则输出Not found
,否则输出该生成绩。 - 删除,格式
3 NAME
:在系统中删除姓名为 NAME 的学生信息。如果没能找到这名学生则输出Not found
,否则输出Deleted successfully
。 - 汇总,格式
4
:输出系统中学生数量。
输入格式
无
输出格式
无
输入输出格式
输入 #1
代码语言:javascript复制5
1 lxl 10
2 lxl
3 lxl
2 lxl
4
输出 #1
代码语言:javascript复制OK
10
Deleted successfully
Not found
0
分析
可以用STL里的map,把 NAME 作为 key ,texttt{SCORE} 作为 value 。注意查询非空一定要用.count(),否则查询之后会自动填充空白。
代码
代码语言:javascript复制#include<bits/stdc .h>
using namespace std;
map<string,int> mp;
string name;
int T,in,score,ans;
int main(){
scanf("%d",&T);
while(T--){
scanf("%d",&in);
if(in==1){
cin>>name>>score;
if(!mp.count(name))ans ;
mp[name]=score;
cout<<"OK"<<endl;
}
if(in==2){
cin>>name;
if(mp.count(name))cout<<mp[name]<<endl;
else cout<<"Not found"<<endl;
}
if(in==3){
cin>>name;
if(mp.count(name)){
mp.erase(name);
ans--;
cout<<"Deleted successfully"<<endl;
}else{
cout<<"Not found"<<endl;
}
}
if( in==4)cout<<ans<<endl;
}
}
最后修改:2021 年 02 月 12 日 04 : 44 PM
© 允许规范转载