首页 > 其他分享 >P1928 外星密码

P1928 外星密码

时间:2024-02-03 17:55:05浏览次数:37  
标签:解压 2WA P1928 压缩 解压缩 密码 字符串 2RE 外星

题目链接:

本题如果直接模拟去做的话极为繁琐,输入的这个字符串是被多重「压缩」的,所以一重一重地「解压缩」可能会非常非常麻烦(不过应该是可行的),导致代码极其难以理解。

所以,我们使用递归算法,在读入这个字符串之后,找出被压缩的内容,再对被压缩的那个字符串实行「解压缩」操作。

举个例子:AC[3FUN]

首先,我们找到了被压缩的字符串:3FUN

对3FUN进行解压,得到FUNFUNFUN

再把原来的字符串AC后面添上FUNFUNFUN即可。

由于这个只有一重「压缩」,可能递归思想体现的不太明显,这里再举一个多重「压缩」的例子:

SAD[4MLE[2TLE[2RE[2WA]]]

首先找到被「压缩」的部分:

[2MLE[2TLE[2RE[2WA]]]]

(从此处开始剩下的部分就是递归的内容了,全部由程序自主实现)

对这个部分进行解压,找到被「压缩」的部分:

[2TLE[2RE[2WA]]]

再对这个部分进行解压,找到被「压缩」的部分:

[2RE[2WA]]

再对这个部分进行解压,找到被「压缩」的部分:

[2WA]

(开始一层一层跳出递归)

对这个部分进行解压并加到前一个字符串的末尾:

[2REWAWA]

再对这个部分进行解压并加到前一个字符串的末尾:[2TLEREWAWAREWAWA]

再对这个部分进行解压并加到前一个字符串的末尾:

[2MLETLEREWAWAREWAWATLEREWAWAREWAWA]

再对这个部分进行解压并加到前一个字符串的末尾:

SADMLETLEREWAWAREWAWATLEREWAWAREWAWAMLETLEREWAWAREWAWATLEREWAWAREWAWA

至此,递归结束,「密码」破译完毕。

所以,我们只需要找到被「压缩」的子串,并把这个字符串扔给「解压缩」程序即可。

最重要的是: 千万不要跳进这个函数里面企图探究更多细节,否则就会陷入无穷的细节无法自拔。——OI Wiki

我们也看到了,上面对SAD[4MLE[2TLE[2RE[2WA]]]的分析细节很多很多,十分复杂。

我们只需要把这个需要「解压缩」的字串扔给「解压缩」函数即可。

#include <bits/stdc++.h>

using namespace std;

string solve() {
	char c;
	string s, p;
	while (cin >> c) {
		if (c == '[') {
			int n;
			cin >> n;
			p = solve();
			while (n--) s += p;
		}
		else if (c == ']') return s;
		else s += c;
	}
	return s;
}

int main()
{
	cout << solve();
	return 0;
}

标签:解压,2WA,P1928,压缩,解压缩,密码,字符串,2RE,外星
From: https://www.cnblogs.com/pangyou3s/p/18005014

相关文章

  • Java将密码加盐加密存储和校验
    注册和登陆的时候,需要加密和校验,以下为加密和解密代码packageorg.ongoal.common.config;importorg.springframework.util.DigestUtils;importorg.springframework.util.StringUtils;importjava.util.UUID;publicclassPasswordUtil{/***加盐算法->格......
  • Windows下修改MySQL密码。
    1.win+r  cmd回车 2.cd+MySQL中bin的路径,切换到mysql中 3.通过mysql-u用户名-p指定root用户登录mysql,回车后会提示输入密码,此时输入的是原来的旧密码 4.修改MySQL的用户密码,格式:setpasswordfor用户名@localhost=password('新密码');修改成root如下: 出......
  • mac下通过ssh脚本实现免账号密码连接运服务器
    mac脚本连接服务器编辑脚本viXXX.ssh#spawn启动一个子进程spawnsshroot@IP-pPORT#expect当出现password:字样时expect"password:"#send向子进程发送密码send"PASSWORD"#控制权交还给用户interact使用脚本expectXXX.ssh......
  • 前端密码安全发送至服务器端
    用户登录时,密码应该通过安全的方式发送到服务器,然后服务器进行验证,并且不应该将密码直接包含在JWT中。以下是一些常见的方法来确保密码传输的安全性:使用HTTPS:确保登录请求通过HTTPS协议进行传输,这样可以加密通信并防止中间人攻击。哈希密码:在客户端将密码哈希化之后再发送......
  • python解密带密码的pdf文件
    ##coding:utf-8###用来存储一些通用模块fromPyPDF2importPdfReader#pdf的读取方法fromPyPDF2importPdfWriter#pdf的写入方法fromCrypto.CipherimportAES#高加密的方法,要引入不然会报错defget_reader(filename,password):#读取pdf的方法(自定义......
  • 目录索引 & 密码提示
    好像是该干些整理活了。算法笔记可能等以后修。线下比赛记录thuwc2023:梦想:拿到了一等约,接下来还要进省队。GDKOI2023:现实:进一步怀疑自己的能力。CSP2023&NOIP2023:没有写记录,信心逐渐动摇。中考:面对:已弃坑,想来挺可惜的。密码是一模排名,一个三位数。GDOI2023游记:惊醒:密码......
  • PBKDF2算法:保护密码安全的重要工具
    摘要:在当今的数字世界中,密码安全是至关重要的。为了保护用户密码免受未经授权的访问和破解,Password-BasedKeyDerivationFunction2(PBKDF2)算法成为了一种重要的工具。本文将介绍PBKDF2算法的优缺点,以及它如何解决密码存储和验证中的一些问题。我们还将提供一个使用Java编......
  • 密码破解--Passware Kit Forensics2021
    这个密码工具真的是难找啊,之前也找到过些许的资源,但都不是破解版的,没有办法启用全部的功能,而且因为是国外的软件全英文对没有使用过密码破解软件的我非常不友好经过不懈的努力,终于找到了完整的资源!完整版的软件资源!链接:https://pan.baidu.com/s/1FaTMgY51-6cLhbuFcOZ3Vg提取......
  • 繁体字转化为简体字 https://share.weiyun.com/ZsmZl6g5 密码:rc8mva
    12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788......
  • vue 设置密码添加弱、中、强的校验
    需求:1)需要输入原密码,如果输入的原密码不对,则给出相应提示;2)新密码需要确认,输入两次,且相同,否则系统给出提示;3)新密码长度大于等于6个字符小手18个字符;4)新密码给出密码强度判断,判断规则为:宇母数字符号只有一种则为弱,字母数字符号任意包含两种则为中,字母数字符号包含三种则为强。HTM......