深信服2020校招研发类笔试题 解密游戏

本文记录了深信服2020校招研发类笔试中的一道解密游戏题,涉及如何利用C++和STL中的map解决密报到译文的映射问题。首先介绍问题背景和解题思路,然后详细讲解了如何使用map存储密报与译文的关系,以及如何查找并输出新的密报对应的译文。文章还回顾了STL中关联容器的知识,并给出了完整的C++代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第二道笔试题没有完成,有些遗憾,在此补充记录一下。做的太认真就没有记题目什么的,那就靠回忆吧

Problem Description

大概是说一个解密游戏,A有密报和对应的译文,密报和译文都是以数字、大小写字母和下划线组成的,且一一对应。B在知道A的这段密报和对应的译文的基础上,另外截取了N段A的密报,求这些密报对应的译文。
输入:
一段密报
一段密文
N
N段密报
输出:
对应的N段译文,每段换行输出

Mentality

之前看过关联容器map和unordered_map,但是没有经常具体使用,一时间记不太清楚怎么使用了,笔试结束后,查阅了文档,是可以做出来的,所以思路没有问题。

遍历已知密报和译文,将映射关系放入map内,然后再输入N段新的密报,从map中找出对应的字符,再组合成译文。

Other Details

1.在STL的容器内部有11种通用容器,其中包括7种序列容器和4种关联容器。关联容器全部是key-value形式的数据结构:map、set、multimap、multiset。

set:值和键类型相同,且只能有唯一的值 [1,2,3]
multiset:值和键类型相同,值可以存在相同的 [1,1,2,2,3]
map:值和键类型可以不同,值只能与唯一的键关联 [[1,2],[2,3],[3,4]]
multimap:值和键类型可以不同,值可与多个键关联 [[1,2],[1,3],[3,4]]
摘自https://blog.csdn.net/weixin_39390393/article/details/89345412

2.使用map
map类头文件:
#include < map >

map为模板类,需要加两个参数:关键字和存储对象
map<int, string> student;
(定义一个用int作为索引,指针指向string)

map的简单构造
map<int, string> student;

map插入操作:
第一种 用insert和pair
student.insert(pair<int, string>(1, “abc”));
第二种 像数组一样用下标插入
student[2] = “def”;

map查找元素:
若关键字存在于map,则返回所在对象的位置,否则返回迭代器iterator,等于end函数的值。
auto iter = student.find(1);
if(iter != student.end())
cout<<“Find, the value is”<< iter ->second<<endl;
else
cout<<“Do not Find”<<endl;

3.string后追加char
一直被这个问题困扰,因为string的方法append要const char类型,但是从iterator上摘取的second的char类型怎么也转换不过去,后来发现可以直接用加号。(  ̄︿ ̄)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值