洛谷每日一题(P5266 【深基17.例6】学籍管理)哈希表

原题目链接:

P5266 【深基17.例6】学籍管理 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

原题目截图:

思路分析:

一眼顶针,就是使用哈希表来做。

程序可以处理四种操作:

  1. 添加操作 (op == 1): 将一个字符串映射到一个整数值。

  2. 查询操作 (op == 2): 查询一个字符串对应的整数值。

  3. 删除操作 (op == 3): 删除一个字符串及其映射的整数值。

  4. 计数操作 (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;
}

假期期间,随便做一道题目了,这题目倒是简单,几分钟就解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值