题目描述
解决过程
递归
思路
递归求解,遇到括号就进行下一层,记得要匹配一下括号,还要加上输出括号后面的
~~~~
举个例子
a
f
[
43
b
c
]
d
e
af[43bc]de
af[43bc]de
遇到
a
f
af
af 直接输出即可,然后找到一个
[
[
[ ,求出数字
43
43
43 然后向后查找找到能够匹配的
]
]
] ,然后循环
43
43
43 次递归进入下一层
b
c
bc
bc ,还要加上后面的
d
e
de
de
代码
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN = 1e4 * 2 + 10;
char a[MAXN];
void print (int l ,int r) {
int sum = 0 ,ok = 0 ,ind;
if (l > r) return ;
while (a[l] == ']') l ++;
while (a[l] != '[' && (a[l] < '0' || a[l] > '9') && a[l] != ']') {
printf ("%c",a[l]);
l ++;
if (l > r) return ;
}
if (l > r) return ;
if (a[l] == '[') {
ok ++;
l ++;
}
while (a[l] >= '0' && a[l] <= '9') {
sum *= 10;
sum += a[l] - '0';
l ++;
}
for (int q = l;q <= r;++ q) {
if (a[q] == ']') {
ok --;
}
if (a[q] == '[') ok ++;
if (ok == 0) {
for (int w = 1;w <= sum;++ w) {
print (l ,q - 1);
}
ind = q;
break;
}
}
print (ind + 1,r);
return ;
}
int main () { scanf ("%s",a);
int len = strlen (a);
print (0 ,len - 1);
return 0;
}
感想
谢谢大家
——2020.9.13