2 solutions
-
3
题意
模拟操作学籍管理
思路
大水模拟题
映射就是map
代码
#include<iostream> #include<map> #include<string> using namespace std; map<string,int>m; int si=0; int main() { int n; cin>>n; while(n--) { int op; cin>>op; if(op==1)//添加 { string name; int sc; cin>>name>>sc; if(!m[name]) si++; m[name]=sc; cout<<"OK\n"; } if(op==2)//获取 { string name; cin>>name; if(m[name]) { cout<<m[name]<<"\n"; } else { cout<<"Not found\n"; } } if(op==3)//删除 { string name; cin>>name; if(m[name]) { m.erase(name); cout<<"Deleted successfully\n"; si--; } else { cout<<"Not found\n"; } } if(op==4)//个数 { cout<<si<<"\n";//这里注意,size是不行的(对于此代码) } } return 0;//完结散花 }
-
1
题意
维护一个集合,提供增、改、查、删、计算总数的功能,具体格式见题目,元素为字符串与值的映射。
思路
在分析、提炼了一下题意,我抓住了映射这个字眼。
下意识用map。
而且我去想了一下,这个题目涉及以下计算:
- 插入元素
- 删除元素
- 计算长度
- 输出值
- 改变值
- 判断存在
而这些在map里面,都不能说是能完成,还能方便地用完成。
代码
#include<iostream> #include<map> using namespace std; map<string,int>systems;//学籍管理系统 int main(){ void adds(string,int);//增 void finds(string);//查 void deletes(string);//删 void summarys(); ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);//有些时候真的不是为了加速, //而是让输出整齐一点。 int n(0);//操作数量 cin>>n; while(n--){//不再需要n了 string mode;//模式 cin>>mode; if(mode=="1"){ string name;//我把题目中的大写改成小写不介意吧,下同。 int score(0); cin>>name>>score; adds(name,score); } if(mode=="2"||mode=="3"){//另外两个都是一个NAME参数, //所以放一起比较方便。 string name; cin>>name; if(mode=="2") finds(name); else deletes(name); } if(mode=="4") summarys(); } return 0;//主函数写完!撒花! //我是边写边加注释,所以现在真的有点不想写下面的感觉。 } void adds(string n,int s){//首字母表含义,具体意义看引用处。 systems[n]=s;//简单的语句,没有就插入,有就修改。 cout<<"OK\n";//真不知道这个OK有什么鸟用 } void finds(string n){ if(systems.find(n)==systems.end())//如果没有 cout<<"Not found\n"; else//如果有 cout<<systems[n]<<'\n';//输出结果 } void deletes(string n){ if(systems.find(n)==systems.end())//直接复制上面的,改一下注释。 cout<<"Not found\n"; else{ systems.erase(n);//删除 cout<<"Deleted successfully\n"; } } void summarys(){ cout<<systems.size()<<'\n';//无语,好简单。 }
众所周知,我有一边写题目,一边加注释的习惯,所以有些注释纯属抒情,可以不用管。
吐槽
这道人机题没讲清楚,霸特,根据平时的经验和样例我们也能猜到,第一个数是个数。
指正
不要听le伟明luin a……啊!粤语用普通话拼音搞不出来好烦!反正就不要听他瞎掰,用size是可以的,他只是输出size时忘了加'\n',他是不是很le?
- 1
Information
- ID
- 254
- Time
- 1000ms
- Memory
- 125MiB
- Difficulty
- 7
- Tags
- (None)
- # Submissions
- 19
- Accepted
- 8
- Uploaded By