【问题描述】

哈利波特在魔法学校的必修课之一就是学习魔咒。据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助。

给你一部魔咒词典。当哈利听到一个魔咒时,你的程序必须告诉他那个魔咒的功能;当哈利需要某个功能但不知道该用什么魔咒时,你的程序要替他找到相应的魔咒。如果他要的魔咒不在词典中,就输出“what?”

【输入形式】

首先列出词典中不超过100000条不同的魔咒词条,每条格式为:

[魔咒] 对应功能

其中“魔咒”和“对应功能”分别为长度不超过20和80的字符串,字符串中保证不包含字符“[”和“]”,且“]”和后面的字符串之间有且仅有一个空格。词典最后一行以“@END@”结束,这一行不属于词典中的词条。
词典之后的一行包含非负整数N(0=<N<=1000),随后是N个测试用例。每个测试用例占一行,或者给出“[魔咒]”,或者给出“对应功能”。

【输出形式】

每个测试用例的输出占一行,输出魔咒对应的功能,或者功能对应的魔咒。如果魔咒不在词典中,就输出“what?”

【样例输入】

[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?

【解题思路】
先整行读取,再用substr做相应的截取(以“】”作为分界判断标准),最后判断输出

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){vector<string>magic(100001);vector<string>fun(100001);vector<string>txt(100001);int count=0;while(1){getline(cin,txt[count]);if(txt[count].find("@END@")!=string::npos)break;count++;}for(int i=0;i<count;i++){magic[i]=txt[i].substr(0,txt[i].find("]")+1);fun[i]=txt[i].substr(txt[i].find("]")+2);}int n;cin>>n;string a;getline(cin,a);//清空缓冲区string temp;for(int i=0;i<n;i++) {getline(cin,temp);int x=0; for(int i=0;i<count;i++){if(temp==magic[i]){cout<<fun[i]<<endl;x++;break;}else if(temp==fun[i]){for(unsigned int j=1;j<magic[i].length()-1;j++)cout<<magic[i][j];cout<<endl;x++;break;}}if(x==0)cout<<"what?"<<endl; }return 0;
}

湖南大学21夏训练三3.魔咒词典相关推荐

  1. 湖南大学21夏训练三4.打牌

    [问题描述] 牌只有1到9,手里拿着已经排好序的牌a,对方出牌b,用程序判断手中牌是否能够压过对方出牌. 规则:出牌牌型有5种 [1]一张 如4 则5-9可压过 [2]两张 如44 则55,66,77 ...

  2. 湖南大学21夏训练三15.公交系统

    [问题描述] 城市公交系统有一个记录仪,用于记录每个站点的乘客人数的变化情况,例如:x表示到站前公交车上的乘客人数,y表示离站时公交车上的乘客人数,则该记录仪记录的该站的数字为y-x.对于一辆公交车和 ...

  3. 湖南大学21夏训练三18.写出来吧

    [问题描述] 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. [输入形式] 每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10的100次方. [输出形式] 在一 ...

  4. 湖南大学21夏训练三10. Maya历法

    [问题描述] 在学术休假期间,M.A. Ya教授在古老的Maya历法上有一个惊人的发现.从一个古老的令人棘手的信息中,教授发现Maya文明以365天为一年,称为Haab,包含19个月.前18个月每月有 ...

  5. 湖南大学21夏训练三13.数字统计

    [问题描述] 给定一个k位整数N = dk-110k-1 + - + d1101 + d0 (0<=di<=9, i=0,-,k-1, dk-1>0),请编写程序统计每种不同的个位数 ...

  6. 湖南大学21夏训练三14.A除以B

    [问题描述] 本题要求计算A/B,其中A是不超过1000位的整数(A>=0),B是1位正整数.你需要输出商数Q和余数R,使得A = B * Q + R成立. [输入形式] 输入在1行中依次给出A ...

  7. 湖南大学21夏训练四7.斯诺克台球

    [问题描述] 斯诺克台球是一项古老而又时尚的运动,使用长方形球桌,台面四角以及两长边中心位置各有一个球袋,使用的球分为1个白球,15个红球和6个彩球共22个球. 其中母球(白球)1只,目标球21只.目 ...

  8. 湖南大学21夏训练四2.最简单的计算机

    [问题描述] 一个名叫是 PigHeadThree 的研究组织设计了一台实验用的计算机,命名为 PpMm.PpMm只能执行简单的六种命令 A,B,C,D,E,F:只有二个内存 M1,M2:三个寄存器 ...

  9. 湖南大学21夏训练四12.疫情期间

    [问题描述] 正值新冠疫情期间,阿迪没法返回学校学习,他希望通过参加一些比赛来提高一下编程技能,同时做做运动.他收集了接下来的 n 天里每一天的信息,包括健身房是否开放,或者互联网上是否有程序设计竞赛 ...

最新文章

  1. 懒 人 世 界 的 生 存 法 则
  2. 2017年大数据的十大发展趋势
  3. Spring学习1之ioc
  4. SpringBoot+Echarts实现一次ajax请求返回并显示多个饼状图
  5. 【Windows工具】BBDown.exe B站视频下载工具详细使用说明(https://github.com/nilaoda/BBDown)
  6. OpenGL Multi Texture多重纹理的实例
  7. Burrow 服务的安装部署
  8. 变形金刚2_变形金刚(
  9. git连接通过ssh连接github
  10. 六个国外免费的DNS服务-做英文与外贸必备
  11. 从Java中的串口读取文件
  12. delphi xe 连接mysql_delphixe7支持MYSQL连接的方式
  13. Python模拟黑客帝国影片中的终端动画脚本
  14. 【基于遥感解译与GIS技术】土地利用图、植被类型图、植被覆盖度图、土壤侵蚀制图
  15. python 多行注释语法_Python 注释-Python注释多行代码-Python注释符-python多行注释-嗨客网...
  16. 国际象棋 小麦 用java怎么算_蓝桥杯-放麦子-java
  17. 删库跑路最佳实践总结
  18. 关于zuul和nginx文件上传大小限制问题
  19. 外部接口调用失败重试
  20. 独自一人开发一整套 ERP 系统是什么水平?

热门文章

  1. 汇编语言——DeBug 调试命令
  2. Quartz框架详解
  3. Fragment管理库:Navigation
  4. jmeter的负载测试
  5. 什么是分布式锁?几种分布式锁分别是怎么实现的?
  6. 解密Kotlin协程的suspend修饰符
  7. 利用Animation控件制作帧动画过程详解
  8. 多项式线性回归matlab,Matlab多项式回归实现
  9. 【计算机网络】巧记IP地址分类
  10. 领投鸟喜获网贷互联优秀成员单位称号,筑牢信息安全防线