#831. 去除括号

去除括号

No submission language available for this problem.

去除括号

题目背景

方老师读大学时,总会利用放假的时间在一家快递公司做兼职,他需要把客户的地址信息录入到系统中。

有时候客户会把地址写成这样的形式:北京市海淀区学院路38号,而有时候他们会写成这样:(北京市)海淀区(学院路)38号。

这种写法用括号表示出了地址的层次结构,但是在录入系统时,括号并不是必须的,而且会占用额外的字符空间。因此,你需要编写一个程序来删除一些的括号,以减少录入时间和空间。

题目描述

现在我们把这个问题简化一下:

给定一个算术表达式,在表达式中,会有用括号括起来的一部分式子表示计算的优先级不同。请你删除一些互相匹配的括号对,输出所有的删除后的方案。按照字典序输出。

比如,给定一个算术表达式 (1+(2*3)+1),所有合法的方案为 (1+2*3+1) 1+(2*3)+1 1+2*3+1。而 (1+2*3)+1 1+(2*3+1) 并不合法,因为删除的括号对不互相匹配。

输入格式

输入一行一个算术表达式。

输出格式

输出所有的删除后的合法方案。每个式子一行,按照字典序输出。

样例 #1

样例输入 #1

(0/(0))

样例输出 #1

(0/0)
0/(0)
0/0

样例 #2

样例输入 #2

(2+(2*2)+2)

样例输出 #2

(2+2*2+2)
2+(2*2)+2
2+2*2+2

样例 #3

样例输入 #3

(1+(2*(3+4)))

样例输出 #3

(1+(2*3+4))
(1+2*(3+4))
(1+2*3+4)
1+(2*(3+4))
1+(2*3+4)
1+2*(3+4)
1+2*3+4

提示

对于 100%100\% 的数据,保证给出的算术表达式的长度不超过 200200,输入仅包含 + - * / ( )