题解 洛谷P1071【潜伏者】
题目链接:https://www.luogu.org/problem/P1071
题意概括:给你一段原来截获的英文密码和与之对应的明文,如果密码表非F♂A法,输出"Failed" ,否则翻译现在给你的一句密文并输出。(所有字母均为大写)
有两种情况视为密码表非法:
1、 所有信息扫描完毕,但发现有字母在原信息中没有出现(密码表脱漏)。
2、 扫描中发现掌握的信息里有明显的自相矛盾或错误(密码表错乱)。
这道题主要思想可以利用数组打表,首先我们定义一个数组code作为密码表
然后进行密码表制作,比如一个密文是“DDYAKIOI”,明文是“SSDPOLKL”(首先声明一点,这只是为了便于理解写的短样例,这个样例实际上已经非法了)
可见code['D'](即code[68])为'S',code['Y']为'D',以此类推。
现有密文为"DOAI",根据一对一原则,翻译出来就是"SKPL"。
下面详细解释一下两种非法情况:
一、密码表脱漏
很好理解,就是有的密文位没有相对应的明文字母。排除方法:因为本题常数较小,考虑使用直接扫描的方法判断

二、密码表错乱
这种情况又分为两种小情况:一对多和多对一
一对多:一个密文位对应多个明文字母。排除方法:压入明文制表过程中判断,发现与当前占位被不同字母抢占则判定非法

多对一:多个密文对应一个明文字母。排除方法:全表从头至尾扫描,发现与当前明文占位不同明文相同的则判定非法

(此图大雾)
接下来是愉快的贴代码时间,是好孩子的话就不要抄袭题解呢……(微笑)
//Stand up for the faith!
#include<bits/stdc++.h>
using namespace std;
#define ll long long char myst[],word[];
char sent[],code[];
//分别代表密文、明文、需译语句、密码表
signed main(void)
{
scanf("%s%s",myst,word);
int len1=strlen(myst);
int len2=strlen(word);
for(int i=;i<=;i++) code[i]='\0'; //初始化密码表,方便判断脱漏
if(len1!=len2||len1<) //初步判断
{
puts("Failed");return ;
}
/*此处明确几点:
1、如果密文和明文长度不等,100%无法一一对应,视为非法
2、如果长度少于26,一定无法A-Z全部对应,直接非法
3、如果长度多于26,不一定非法(比如有两次等价对应)*/
for(int i=;i<len1;i++)
{
if(code[myst[i]]>='A'&&code[myst[i]]<='Z'&&code[myst[i]]!=word[i])
//判断不同字母对应相同密字(此前已有其他不同的字母占位)
{
puts("Failed");return ;
}
for(int j='A';j<='Z';j++)
{
if(code[j]==word[i]&&j!=myst[i])
//判断相同字母对应不同密字(在不同占位上含有相同的字母)
{
puts("Failed");return ;
}
}
code[myst[i]]=word[i];
}
for(int i='A';i<='Z';i++)
{
if(code[i]=='\0') //判断是否有字母没有出现
{
puts("Failed");return ;
}
}
scanf("%s",sent);
int len=strlen(sent);
for(int i=;i<len;i++)
{
cout<<code[sent[i]]; //逐个输出对应字母
}
}
作者:KGB1331
2019-09-11 19:13:36
题解 洛谷P1071【潜伏者】的更多相关文章
- 洛谷 P1071 潜伏者
P1071 潜伏者 题目描述 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S ...
- 洛谷 P1071 潜伏者 —— 模拟
题目:https://www.luogu.org/problemnew/show/P1071 按题意模拟即可. 代码如下: #include<iostream> #include<c ...
- 洛谷P1071 潜伏者
https://www.luogu.org/problem/P1071 #include<bits/stdc++.h> using namespace std; map<char,c ...
- [NOIP2009] 提高组 洛谷P1071 潜伏者
题目描述 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S 国军方内部欲发送的原 ...
- 洛谷P1071潜伏者(提高组)
题目描述 R国和S国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于S国的R 国间谍小C终于摸清了 S 国军用密码的编码规则: 1. S国军方内部欲发送的原信息经过加密后在网 ...
- (Java实现) 洛谷 P1071 潜伏者
题目描述 R国和 S国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S国的 R 国间谍小 C终于摸清了 S 国军用密码的编码规则: 1. S 国军方内部欲发送的原信息经过 ...
- 题解 洛谷P5018【对称二叉树】(noip2018T4)
\(noip2018\) \(T4\)题解 其实呢,我是觉得这题比\(T3\)水到不知道哪里去了 毕竟我比较菜,不大会\(dp\) 好了开始讲正事 这题其实考察的其实就是选手对D(大)F(法)S(师) ...
- 题解 洛谷 P3396 【哈希冲突】(根号分治)
根号分治 前言 本题是一道讲解根号分治思想的论文题(然鹅我并没有找到论文),正 如论文中所说,根号算法--不仅是分块,根号分治利用的思想和分块像 似却又不同,某一篇洛谷日报中说过,分块算法实质上是一种 ...
- 题解-洛谷P5410 【模板】扩展 KMP(Z 函数)
题面 洛谷P5410 [模板]扩展 KMP(Z 函数) 给定两个字符串 \(a,b\),要求出两个数组:\(b\) 的 \(z\) 函数数组 \(z\).\(b\) 与 \(a\) 的每一个后缀的 L ...
随机推荐
- 第五章-处理多窗口 | Electron实战
本章主要内容: 使用JavaScript Set数据结构跟踪多个窗口 促进主进程和多个渲染器进程之间的通信 使用Node APIs检查应用程序运行在那个平台上 现在,当Fire Sale启动时,它为U ...
- Kotlin的特性
time streams try-with-resources 函数扩展,给types.classes或者interfaces新增方法 null safe 不需要new,后缀声明类型 自动转换有get ...
- 解决 Android 中出现依赖多个版本支持库的问题
在 app 的 build.gradle 中引入依赖时发现如下错误: All com.android.support libraries must use the exact same version ...
- 洛谷 P5367 【模板】康托展开(数论,树状数组)
题目链接 https://www.luogu.org/problem/P5367 什么是康托展开 百度百科上是这样说的: “康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩. ...
- 腾讯物联TencentOS tiny上云初探
2017年中旬曾写过一篇关于物联网平台的文章<微软最完善,百度最“小气” 看微软阿里百度三大物联网云平台对比>.现在已经过去两年了,物联网的格局又发生了不少的变化.不过针对腾讯来说,其物联 ...
- iOS项目之多Targets和多环境配置
项目中使用的同一套代码,但需要开发多个app,app中内容基本上相同,只有一些小小的区别,例如名称等等,每个app中又需要分开发环境(Dev).测试环境(Test).正式环境(Pro). 下面就开始搭 ...
- tensorflow学习笔记——图像数据处理
喜欢摄影的盆友都知道图像的亮度,对比度等属性对图像的影响是非常大的,相同物体在不同亮度,对比度下差别非常大.然而在很多图像识别问题中,这些因素都不应该影响最后的结果.所以本文将学习如何对图像数据进行预 ...
- Selenium + python 测试环境搭建扩展-HTMLUNIT的使用
尝试给公司的网站写每日例行检查的脚本时,不需要去打开浏览器,这是就用到HTMLUNIT的使用 HTMLUNIT是基于Selenium服务端的,所以需要selenium-server-standalon ...
- Nginx总结(一)Linux如何安装Nginx
以前写过一些Nginx的文章,但都是用到什么说什么,没有一个完整系统的总结.趁最近有时间,打算将Nginx相关的内容重新整理一下.nginx系列文章地址如下:https://www.cnblogs.c ...
- Spring-Boot:拦截器注解范例
package com.example.aop; import java.lang.annotation.Documented; import java.lang.annotation.Element ...