ZJM 与霍格沃兹

2023-11-04 02:10
文章标签 格沃兹 zjm

本文主要是介绍ZJM 与霍格沃兹,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ZJM 为了准备霍格沃兹的期末考试,决心背魔咒词典,一举拿下咒语翻译题
题库格式:[魔咒] 对应功能
背完题库后,ZJM 开始刷题,现共有 N 道题,每道题给出一个字符串,可能是 [魔咒],也可能是对应功能
ZJM 需要识别这个题目给出的是 [魔咒] 还是对应功能,并写出转换的结果,如果在魔咒词典里找不到,输出 “what?”
Input
首先列出魔咒词典中不超过100000条不同的咒语,每条格式为:
[魔咒] 对应功能
其中“魔咒”和“对应功能”分别为长度不超过20和80的字符串,字符串中保证不包含字符“[”和“]”,且“]”和后面的字符串之间有且仅有一个空格。魔咒词典最后一行以“@END@”结束,这一行不属于词典中的词条。
词典之后的一行包含正整数N(<=1000),随后是N个测试用例。每个测试用例占一行,或者给出“[魔咒]”,或者给出“对应功能”。
Output
每个测试用例的输出占一行,输出魔咒对应的功能,或者功能对应的魔咒。如果在词典中查不到,就输出“what?”
Sample Input

[expelliarmus] the disarming charm
[rictusempra] send a jet of silver light to hit the enemy
[tarantallegra] control the movement of one's legs
[serpensortia] shoot a snake out of the end of one's wand
[lumos] light the wand
[obliviate] the memory charm
[expecto patronum] send a Patronus to the dementors
[accio] the summoning charm
@END@
4
[lumos]
the summoning charm
[arha]
take me to the sky

Sample Output

light the wand
accio
what?
what?

思路:

首先,开map<string,string>肯定会爆内存;
那么就要使用hash函数string映射成int

哈希函数:目的就是为了产生字符串的哈希值,让不同的字符串尽量产生不同的哈希值的函数就是好的哈希函数,全然不会产生同样的哈希函数就是完美的。

BKDRHash是比较好的一个获取哈希值的方法,无论是在实际效果还是编码实现中,效果都是最突出的。

在这里插入图片描述
所以思路是:
在这里插入图片描述
详细请看代码(有详细注释);

代码:

#include <algorithm>
#include <iostream>
#include <map>
#include <string>
using namespace std;
const int maxn = 1e5 + 5;
const int seed = 7, mod = 1e9 + 7;
int N;
map<int, int> mp;
string s1[maxn], s2[maxn];unsigned int toInt(string &s)
{//hash函数   返回值是自动溢出int res = 0, index = 0;res = int(s[s.length() - 1]) * seed;for (int i = s.length() - 2; i >= 0; i--){res = ((res + int(s[i])) * seed) % mod;    //秦九韶}return res % mod;
}int main()
{string str, name, func;int index = 1;while (getline(cin, str) && str != "@END@"){int idx = str.find(']');name = str.substr(1, idx - 1);   //去掉[]func = str.substr(idx + 2);    //截取名称和功能mp[toInt(name)] = index;     //映射保存s1[index] = func;mp[toInt(func)] = index;s2[index] = name;index++;}cin >> N;getchar();for (int i = 1; i <= N; i++){getline(cin, str);if (str[0] == '['){//判断查询是名称还是功能int idx = str.find(']');name = str.substr(1, idx - 1);   //名称截取  去掉[]index = mp[toInt(name)];if (index == 0)  //index==0   没有找到cout << "what?" << endl;else{cout << s1[index] << endl;}}else{//与上面类似index = mp[toInt(str)];if (index == 0)cout << "what?" << endl;else{cout << s2[index] << endl;}}}return 0;
}

这篇关于ZJM 与霍格沃兹的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/342507

相关文章

解决游戏霍格沃兹找不到EMP.dll问题的5种方法

在玩《霍格沃兹》游戏时,我们可能会遇到一些错误提示,其中之一就是“缺少dll文件”。其中,EMP.dll文件丢失是一个常见的问题。这个问题可能会导致游戏无法正常运行或出现各种错误。为了解决这个问题,本文将介绍5种解决方法,帮助玩家顺利进入霍格沃兹的世界。   一,了解dll文件有什么作用 DLL文件,即动态链接库文件(Dynamic Link Library),是Windows操作

C++课后作业 1. 输出字符串,hello,霍格沃兹学院(第一次作业 内含闲聊)

文章目录 前引原题题目代码实现提交结果 前引 哈哈 作为笔者 说实话 笔者学到现在 才真的感觉到了 一种无可奈何 和 一种必须抗于压力去做很多事情的感觉 第一个无可奈何 是对霍格沃兹学院的教学水平 感到深深的无力 尽管笔者的C++水平 现在还没有开始起步做一些很大型的项目 但是应该来说可以超过百分之八九十的C++ user 笔者在c++上要走的路还有很多… 对于C

【03】霍格沃兹测试开发学社技术学习笔记之服务端接口测试

# 服务端接口测试 接口测试场景 测试工具 测试类型工具价值接口抓包Charles,Fiddler,TCPdump,mitmproxy抓包工具可以获取app的数据包接口测试postman接口调试工具,学习成本低,直接安装即可使用接口自动化测试requests、restAssured用于接口自动化测试的Java、python第三方库,需要与对应编程语言结合使用性能测试Jmeter性能测试

Week15 A ZJM 与霍格沃兹

ZJM 与霍格沃兹 ZJM 为了准备霍格沃兹的期末考试,决心背魔咒词典,一举拿下咒语翻译题 题库格式:[魔咒] 对应功能 背完题库后,ZJM 开始刷题,现共有 N 道题,每道题给出一个字符串,可能是 [魔咒],也可能是对应功能 ZJM 需要识别这个题目给出的是 [魔咒] 还是对应功能,并写出转换的结果,如果在魔咒词典里找不到,输出 “what?” Input 首先列出魔咒词典中不超过1000

字符串Hash ZJM 与霍格沃兹

题意: ZJM 为了准备霍格沃兹的期末考试,决心背魔咒词典,一举拿下咒语翻译题 题库格式:[魔咒] 对应功能 背完题库后,ZJM 开始刷题,现共有 N 道题,每道题给出一个字符串,可能是 [魔咒],也可能是对应功能 ZJM 需要识别这个题目给出的是 [魔咒] 还是对应功能,并写出转换的结果,如果在魔咒词典里找不到,输出 “what?” Input 首先列出魔咒词典中不超过100000条不

【00】霍格沃兹测试开发学社技术学习笔记之测试方法与理论

一、软件开发流程 软件开发流程的演变 传统的瀑布模型——>敏捷开发模型——>DevOps开发模型 模型:是在软件开发过程中总结出来的经验 软件开发模型对比 模型名称        模型流程模型特点模型优点模型缺点瀑布模型 1. 软件开发的各项活动严格按照线性方式进行 2. 当前活动接受上一项活动的工作结果 3. 当前活动的工作结果需要进行验证 1. 开发的各个阶段比较清晰 2. 强调设计

霍格沃兹emp.dll文件丢失要怎么处理?快速修复emp.dll的方法

最近有朋友反映在他们玩霍格沃兹的时候,突然弹出一个emp.dll文件丢失的窗口,然后就玩不了游戏了,那么面对这种情况要怎么去解决呢?其实解决方法还是有挺多的,下面我们一起来了解一下吧。 一.emp.dll文件有什么作用 emp.dll文件是一个Windows操作系统的动态链接库(DLL),它通常用于与HTTP或HTTPS服务器进行通信。EMP代表"Enterprise Mode Protoco