[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;
}

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Stack overflow at line:0 问题解决「建议收藏」

    Stack overflow at line:0 问题解决「建议收藏」首先声明这个问题的解决时针对于,做开发的人来说。如果非开发用户,在网上查找其他的解决方法。今天弄的一个池上陈酒网站,,打开网页时提示Stackoverflowatline:0。截图如下:             找了好长时间没发现问题,后来在网上搜了一下,做了一下参考,然后终于解决问题了.如果你的网页中有如下代码:分析:

  • 4.pycharm添加第三方库[通俗易懂]

    4.pycharm添加第三方库[通俗易懂]网络爬虫的第一步就是根据URL,获取网页的HTML信息。在Python3中,可以使用urllib.request和requests进行网页爬取。(1)准备所需库我们需要准备一款名为BeautifulSoup(网页解析)的开源库,用于对下载的网页进行解析,我们是用的是PyCharm编译环境所以可以直接下载该开源库。urllib库是python内置的,无需我们额外安装,只要安装了Python就可以使用这个库。requests库是第三方库,需要我们自己安装。第三方库安装步骤如下:选择File-&g

  • 工作日志2014-07-09

    工作日志2014-07-09

    2021年11月23日
  • C++的this指针

    C++的this指针C++的this指针当你进入一个房子后,你可以看见桌子、椅子、地板等,但是房子你是看不到全貌了。对于一个类的实例来说,你可以看到它的成员函数、成员变量,但是实例本身呢?this是一个指针,它时时刻刻指向你这个实例本身。C++在初始化对象时,每个对象中的数据成员都会得到系统分配的自己独立的存储空间。对于成员函数来说,一个函数的代码段在内存中只有一份,同一个类中的不同对象在调用自己的成…

  • python for循环多个参数处理_python for循环嵌套

    python for循环多个参数处理_python for循环嵌套实际上,“使用for循环遍历数组的最简单方法”(Python类型被命名为“list”BTW)是第二种方法,即foriteminsomelist:do_something_with(item)哪个FWIW适用于所有iterable(列表、元组、集合、dict、迭代器、生成器等)。基于范围的C风格版本被认为是非常不通俗的,并且只适用于列表或类似列表的iterable。WhatIwouldl…

  • xgboost算法原理简介_量子优化算法

    xgboost算法原理简介_量子优化算法1、xgboost是什么全称:eXtremeGradientBoosting作者:陈天奇(华盛顿大学博士)基础:GBDT所属:boosting迭代型、树类算法。适用范围:分类、回归优点:速度快、效果好、能处理大规模数据、支持多种语言、支持自定义损失函数等等。缺点:发布时间短(2014),工业领域应用较少,待检验2、基础知识,GBDTxgboost

发表回复

您的电子邮箱地址不会被公开。

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