原题目链接:
P5266 【深基17.例6】学籍管理 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
原题目截图:
思路分析:
一眼顶针,就是使用哈希表来做。
程序可以处理四种操作:
-
添加操作 (
op == 1
): 将一个字符串映射到一个整数值。 -
查询操作 (
op == 2
): 查询一个字符串对应的整数值。 -
删除操作 (
op == 3
): 删除一个字符串及其映射的整数值。 -
计数操作 (
op == 4
): 输出当前映射中包含的键值对数量。
使用unordered_map
来存储字符串和整数的映射。unordered_map
基于哈希表实现,提供了平均常数时间复杂度的插入、查找和删除操作。
解决代码:
#include<iostream>
using namespace std;
#include<unordered_map>
int main() {
int n;
cin >> n; //操作条数
unordered_map<string, int>ump;
for (int i = 0; i < n; i++) {
int op;
cin >> op;
string name;
if (op == 1) {
cin >> name;
cin>>ump[name];
cout << "OK" << endl;
}
else if (op == 2) {
cin >> name;
if (ump.count(name)) cout << ump[name] << endl;
else cout << "Not found" << endl;
}
else if (op == 3) {
cin >> name;
if (ump.count(name)) {
ump.erase(name);
cout << "Deleted successfully" << endl;
}
else cout << "Not found" << endl;
}
else if (op == 4) {
cout << ump.size() << endl;
}
}
return 0;
}
假期期间,随便做一道题目了,这题目倒是简单,几分钟就解决了。