用c++解决下述问题:描述 Akko is learning magic in Luna Nova Magical Academy. It is said that there are 10^5 types of different curses in the magic world. It is too hard for Akko to memorize all of them. Fortunately, Proffesor Meridies says that she can help Akko make a Curse Dictionary. When Akko hears a curse, the Dictionary will tell her the effect of the curse. Also, when Akko wants to do something, the Dictionary will find the curse for her. If there is no such curse, the Dictionary will be silence. Can you write a program to reproduce the Curse Dictionary? 输入 Each test case will contain no more than 10^5 curses. Each curse will be like "[name] effect". The name and effect of the curse will only contain lowercase letters. There will be only one space between ']' and the string after it. The length of the name will not exceed 20 and the length of the effect will not exceed 80. The end of the dictionary is a line of "END". After all curses there will be an integer N (1<=N<1000), followed by N queries. Every query will be a "[curse name]" or a "curse effect". There will be only one test case in each input file. 输出 For each test case, you must output the effect of the curse by its name or the name of the curse by its effect. If there is no curse satisfying the condition, print "silence".

时间: 2024-02-14 20:10:39 浏览: 20
以下是用C++解决这道题的代码实现: ```cpp #include <iostream> #include <string> #include <unordered_map> using namespace std; int main() { unordered_map<string, string> curses; // 用哈希表存储咒语和效果的对应关系 // 读入咒语和效果 string curse; while (getline(cin, curse) && curse != "END") { string name = curse.substr(1, curse.find(']') - 1); string effect = curse.substr(curse.find(']') + 2); curses[name] = effect; } // 处理查询请求 int n; cin >> n; getchar(); // 读入换行符 while (n--) { string query; getline(cin, query); if (query[0] == '[') { // 根据咒语名称查询对应效果 string name = query.substr(1, query.size() - 2); if (curses.count(name)) { cout << curses[name] << endl; } else { cout << "silence" << endl; } } else { // 根据效果查询对应咒语名称 bool found = false; for (auto it = curses.begin(); it != curses.end(); ++it) { if (it->second == query) { cout << "[" << it->first << "]" << endl; found = true; break; } } if (!found) { cout << "silence" << endl; } } } return 0; } ``` 思路如下: 1. 用 `unordered_map` 存储咒语和效果的对应关系,咒语名称作为键,效果作为值。 2. 读入咒语和效果,将其存储到哈希表中。 3. 处理查询请求,如果查询请求以 `[` 开头,则根据咒语名称查询对应效果;否则,根据效果查询对应咒语名称。 4. 输出查询结果。 注意事项: 1. 读入咒语和效果时,要使用 `getline` 函数,因为每行可能包含空格。 2. 读入查询请求时,要先读入一个换行符,否则可能会将上一行的回车符作为查询请求的第一个字符。 3. 在输出查询结果时,要注意加上换行符。

相关推荐

最新推荐

recommend-type

6-10.py

6-10
recommend-type

基于机器学习的入侵检测系统+源码+说明.zip

基于机器学习的入侵检测系统+源码+说明.zip
recommend-type

matlab基于潜在低秩表示的红外与可见光图像融合.zip

matlab基于潜在低秩表示的红外与可见光图像融合.zip
recommend-type

4-5.py

4-5
recommend-type

基于tensorflow使用简单线性回归实现波士顿房价预测源码.zip

基于tensorflow使用简单线性回归实现波士顿房价预测源码.zip
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

2. 通过python绘制y=e-xsin(2πx)图像

可以使用matplotlib库来绘制这个函数的图像。以下是一段示例代码: ```python import numpy as np import matplotlib.pyplot as plt def func(x): return np.exp(-x) * np.sin(2 * np.pi * x) x = np.linspace(0, 5, 500) y = func(x) plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.title('y = e^{-x} sin(2πx)') plt.show() ``` 运行这段
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。