A - ZJM 与霍格沃兹(必做)
描述:
文章图片
输入:
文章图片
输出:
文章图片
样例: 输入:
[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
输出:
light the wand
accio
what?
what?
思想: 整体思想是将字符串转化为对应hash值保存在map中,最后在map中搜索。
文章图片
计算hash值可以直接按照公式一个一个算,为了节约时间对于seed的乘法可以采用乘法快速幂计算。还可以采用提公因式计算,这样乘的次数取决于最高次。
文章图片
提公因子对应代码为:
long long Hash(string x)
{
long ans=0;
for(int i=0;
i
【程序设计思维与实践|程序设计思维与实践 Week15 作业 A - ZJM 与霍格沃兹(必做)】t1 = s.substr(0, s.find("] “)+1);
t2 = s.substr(s.find(”] “)+2, s.length() - s.find(”] ") - 1);
substr方法有效的提取想要的指定部分,然后将他们push进vector,对应的map记录,这里连续存放,方便后续提取。
对于查询的字符串直接
getline(cin, s); if(mp.find(Hash(s)) != mp.end() )判断是否存在在map中,若存在再进一步判断类型。
代码:
/*
字符串hash;
*/
#include
#include
#include
#include
#include
#include
推荐阅读
- 个人日记|K8s中Pod生命周期和重启策略
- 学习分享|【C语言函数基础】
- C++|C++浇水装置问题
- 数据结构|C++技巧(用class类实现链表)
- C++|从零开始学C++之基本知识
- 步履拾级杂记|VS2019的各种使用问题及解决方法
- leetcode题解|leetcode#106. 从中序与后序遍历序列构造二叉树
- 每日一题|每日一题-解码(第十一届蓝桥杯)(简单思维)
- 动态规划|暴力递归经典问题
- 麦克算法|4指针与队列