[NOIp2009]潜伏者 题解「建议收藏」

[NOIp2009]潜伏者 题解「建议收藏」"题面"做法:模拟我们先定义三个char数组:a小C掌握的一条加密信息b加密信息所对应的原信息cR国司令部要求小C翻译的加密信息具体做法:1.读入(不讲)

大家好,又见面了,我是你们的朋友全栈君。

题面

做法:模拟


我们先定义三个char数组:
a -> 小 C掌握的一条加密信息
b -> 加密信息所对应的原信息
c -> R国司令部要求小C翻译的加密信息

具体做法:

  1. 读入(不讲)
  2. 一个特判:若输入a数组长度<=26,直接输出“Failed”,因为题目要求必须26个字母都需要有对应的字母
  3. for循环将a数组字符通过map映射与b数组对应字符建立联系,同时加一重判定,检查当前字符是否之前用过,字符是否与不同字符建立联系
  4. for循环查看26个字母是否都被赋值
  5. for循环将c数组字符对应到b数组并输出
  6. return 0

总时间复杂度:O(len(a+c))


具体见代码:

#include <bits/stdc++.h>

const int N = 100010; //题中没有要求,可自己随意开,但尽量开大些
using namespace std;

char a[N], b[N], c[N];
map <char, char> m;
map <char, char> check;

int main () {
	scanf ("%s%s%s", a, b, c);
	int len = strlen (a);
	if (len < 26) {
		cout << "Failed" << endl;
		return 0;
	}
	for (int i = 0; i < len; i++) {
		if (check[b[i]]) {//反向搜索,其中有一个点需要反过来查错
			if (check[b[i]] != a[i]) {
				cout << "Failed" << endl;
				return 0;
			}
		}
		if (m[a[i]]) {//正向搜索,没有反向可拿90pts
			if (m[a[i]] != b[i]) {
				cout << "Failed" << endl;
				return 0;
			}
		}
		else {
			m[a[i]] = b[i];
			check[b[i]] = a[i];
		}
	}
	for (int i = 1; i <= 26; i++) {//查看26个字母是否都被赋值
		if (!m[(char)(i+'A'-1)]) {
			cout << "Failed" << endl;
			return 0;
		}
	}
	len = strlen (c);
	for (int i = 0; i < len; i++) {//输出
		cout << m[c[i]];
	}
	cout << endl;
	return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155709.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python语言中变量的命名规则是什么_Python中变量的命名规则

    python语言中变量的命名规则是什么_Python中变量的命名规则讲解对象:Python中变量的命名规则作者:融水公子rsgz➢>变量的命名理解Python需要使用标识符给变量命名,其实标识符就是用于给程序中变量、类、方法命名的符号(简单来说,标识符就是合法的名字)。➢>命名要求Pvthon语言的标识符必须以字母、下画线()开头,后面可以跟任意数目的字母、数字和下画线➢>注意此处的字母并不局限于26个英文字母可以包含中文字符、日文字符等…

    2022年5月4日
  • 算法学习笔记——贪婪

    算法学习笔记——贪婪

    2022年1月6日
  • js怎么让指定方法先后顺序_jquery固定table表头

    js怎么让指定方法先后顺序_jquery固定table表头当时遇见这个问题是医院手麻系统大批量数据展示,由于是旧项目系统没有使用到前端的架构只能使用JQ,JS,css完成也谢谢给予我支持的同行们固定首行数据:采用函数的方式进行JQ/***

    2022年8月2日
  • HashMap数据结构(hashmap数据结构图)

    Java综合/**  *@authorannegu  *@date2009-12-02  */Hashmap是一种非常常用的、应用广泛的数据类型,最近研究到相关的内容,就正好复习一下。网上关于hashmap的文章很多,但到底是自己学习的总结,就发出来跟大家一起分享,一起讨论。1、hashmap的数据结构要知道hashmap

    2022年4月17日
  • 可攻陷所有WiFi网络!KRACK 漏洞发现者回答纪实

    可攻陷所有WiFi网络!KRACK 漏洞发现者回答纪实如果你能连接到的Wi-Fi一夜之间不安全了,通过自家路由器的Wi-Fi上网冲浪却陷入勒索软件和其他恶意软件的包围中,一浪冲到沙滩上……这并非是夸张,就在今天,比利时安全研究人员MathyVanhoef表示,WPA2安全加密协议已经被破解,并在演示视频中对一部Android智能手机执行了一次KRACK。在演示中,攻击者可以对用户传输…

    2022年6月4日
  • c++ 优先级队列自定义比较函数_队列发送优先级

    c++ 优先级队列自定义比较函数_队列发送优先级#include<iostream>usingnamespacestd;#include”queue”//头文件voidOperator(){ priority_queue<int>p1;//默认是最大值优先级队列默认按从大到小存放 //priority_queue<int,vector<int>,less&…

    2022年9月2日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号