Time Limit: 1 second

Memory Limit: 128 MB

【问题描述】

有了防护伞,并不能完全避免2012的灾难。地球防卫小队决定去求助外星种族的帮助。经过很长时间的努力,小队终于收到了外星

生命的回信。但是外星人发过来的却是一串密码。只有解开密码,才能知道外星人给的准确回复。解开密码的第一道工序就是

解压缩密码,外星人对于连续的若干个相同的子串”X”会压缩为”[DX]”的形式(D是一个整数且1 <= D <= 99),比如说字符

串”CBCBCBCB”就压缩为”[4CB]”或者”[2[2CB]]”,类似于后面这种压缩之后再压缩的我们称之为二重压缩。如果是

”[2[2[2CB]]]”,则是三重。现在我们将给你外星人发送的密码,请你对其进行解压缩。

[数据范围]

对于50%的数据:解压后的字符串长度在1,000以内,最多只有三重压缩。

对于100%的数据:解压后的字符串长度在20,000以内,最多只有十重压缩。

保证只包含数字、大写字母、’[’和’]’。

【输入格式】

第1行:一个字符串

【输出格式】

第1行:一个字符串

Sample Input

AC[3FUN]

Sample Output

ACFUNFUNFUN

【题目链接】:http://noi.qz5z.com/viewtask.asp?id=t093

【题解】



按照所给的规则模拟一下展开的过程就好;

这个过程有很多重复的步骤;

所以考虑用递归来搞;

每一层递归,看看里面还有没有嵌套;

如果没有嵌套,那么就直接处理出来;

然后返回上层;

注意会有这样的输入

[3C[2D]]->CDDCDDCDD

[2C[2D]F[2B]]->CDDFBBCDDFBB

具体的看代码君吧。



【完整代码】

#include <cstdio>
#include <string>
#include <iostream> using namespace std; string s; string dfs(int l,int r)
{
int ll =0;
for (ll = l+1;ll <= r-1;ll++)//里面有没有嵌套
if (s[ll]=='[')
break;
if (ll==r)
{
int x = 0,i;
for (i = l+1;i <= r-1;i++)
if (s[i]>='0' && s[i] <= '9')
x = x*10+s[i]-'0';
else
break;
//i..r-1
string t = s.substr(i,r-i);
string ss = "";
for (i = 1;i <= x;i++)
ss+=t;
return ss;
}
else
{
//integer
//ll..rr待处理
int i,x = 0;
for (i = l+1;i<=r-1;i++)
if (s[i]>='0' && s[i]<='9')
x = x*10 + s[i]-'0';
else
break;
string ss = "",ts="";
for (int j = i;j<=r-1;j++)
if (s[j]=='[')
{
int jj = j+1;
int t = 1;
while (t!=0)
{
if (s[jj]==']') t--;
if (s[jj]=='[') t++;
if (t==0) break;
jj++;
}
ss+=dfs(j,jj);
j = jj;
}
else
ss+=s[j];
for (i = 1;i <= x;i++)
ts+=ss;
return ts;
}
} int main()
{
//freopen("F:\\rush.txt","r",stdin);
cin >> s;
int len = s.size();
for (int i = 0;i <= len-1;i++)
if (s[i]=='[')
{
int j = i+1;
int t = 1;
while (j <= len-1 && t!=0)
{
if (s[j]=='[') t++;
if (s[j]==']') t--;
if (t==0) break;
j++;
}
//i..j是一个待展开的东西
cout << dfs(i,j);
i = j;
}
else
putchar(s[i]);
return 0;
}

【t093】外星密码的更多相关文章

  1. P1928 外星密码

    题目描述 有了防护伞,并不能完全避免 2012 的灾难.地球防卫小队决定去求助外星种族的帮 助.经过很长时间的努力,小队终于收到了外星生命的回信.但是外星人发过来的却是一 串密码.只有解开密码,才能知 ...

  2. [Luogu] 外星密码

    https://www.luogu.org/problemnew/show/P1928 沙比提 读清题目 #include <bits/stdc++.h> using namespace ...

  3. 【BZOJ-1923】外星千足虫 高斯消元 + xor方程组

    1923: [Sdoi2010]外星千足虫 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 766  Solved: 485[Submit][Status ...

  4. 【BZOJ-2251】外星联络 后缀数组 + 暴力

    2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 670  Solved: 392[Submit][ ...

  5. bzoj 2251: [2010Beijing Wc]外星联络 后缀数组

    2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 424  Solved: 232[Submit][ ...

  6. bzoj 1923 [Sdoi2010]外星千足虫(高斯消元+bitset)

    1923: [Sdoi2010]外星千足虫 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 634  Solved: 397[Submit][Status ...

  7. BZOJ 1923: [Sdoi2010]外星千足虫 [高斯消元XOR]

    1923: [Sdoi2010]外星千足虫 对于 100%的数据,满足 N≤1,000,M≤2,000. 裸高斯消元解异或方程组 给定方程顺序要求用从上到下最少的方程,那么找主元时记录一下最远找到哪个 ...

  8. 【阿里聚安全·安全周刊】科学家警告外星恶意代码|新方法任意解锁iPhone

    本周的七个关键词: 外星恶意代码 丨 任意解锁iPhone 丨  安卓9.0 丨 黑客攻击医疗设备 丨 仙女座僵尸网络 丨  苹果联合创始人被骗比特币 丨JavaScript -1-   [恶意代码] ...

  9. BZOJ_1923_[Sdoi2010]外星千足虫_高斯消元+bitset

    BZOJ_1923_[Sdoi2010]外星千足虫_高斯消元 Description Input 第一行是两个正整数 N, M. 接下来 M行,按顺序给出 Charles 这M次使用“点足机”的统计结 ...

随机推荐

  1. HTTP之request请求(注册)

    HTTP之request请求 request:请求 作用:获取浏览器发送过来的数据 组成部分:请求行 请求头 请求体 操作请求行 格式: 请求方式 请求资源 协议/版本 常用方法:HttpServle ...

  2. UE4碰撞规则详解

    UE4的碰撞设置在官方的文档的 物理模拟模块(链接:点击打开链接).但是操作起来感觉坑还是比较多,所以这里总结一下,以防平时经常会漏掉或忽略某些条件.如果想看关于碰撞响应触发,可以参考链接( UE4蓝 ...

  3. 在maven多模块结构中,并且使用overlay的情况下使用jetty热部署

    在使用maven多模块的结构的时候,同时有多个web工程使用maven-war-plugin的overlay来组织的时候,本地开发时如何在eclipse里面启动容器并且可以热部署调试是个比较麻烦的问题 ...

  4. HTML 5适合小公司,适合在大平台上做内容

    Web App,现在有时候也称为轻应用,不仅是通过浏览器就能打开的应用.现在随着 HTML 5 在手机端的优越性,已经慢慢称为了 Web App 的主流.Web App 除了出现在 PC 的浏览器中, ...

  5. oracle-600错误

    event='10841 trace name context forever' 可以屏蔽这个ORA-00600错误. SQL> show parameter event NAME TYPE V ...

  6. kendo grid 使用小结

    需要注意的: 1. id,如果没有指定id则会导致create.update等操作无法正常使用. 头疼事项: 1. 服务端失败返回error数据.如果是编辑状态,还不能友好提示错误.当然可以使用大量代 ...

  7. win7 64位下如何安装配置mysql-5.7.4-m14-winx64(安装记录)

    1.   mysql-5.7.4-m14-winx64.zip下载 官方网站下载地址:http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.17 ...

  8. 快速删除项目中的输出日志console.log

    项目开发时,控制台往往有许多忘记删除或注释掉的输出日志.但是上线后总不能一个一个删吧,最近总结出几个解决思路 重写console.log方法,使其失去 输出能力 这个最直接有效,用vue框架的话放在m ...

  9. LeetCode99 Recover Binary Search Tree

    Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...

  10. FZU 2234 牧场物语【多线程dp】

     Problem 2234 牧场物语  Problem Description 小茗同学正在玩牧场物语.该游戏的地图可看成一个边长为n的正方形. 小茗同学突然心血来潮要去砍树,然而,斧头在小茗的右下方 ...