题目:给出一个正整数n,请给出所有的包含n个'('和n个')'的字符串,使得'('和')'可以完全匹配。
例如:
'(())()','()()()' 都是合法的;
'())()('是不合法的。
请按照__字典序__给出所有合法的字符串。
输入描述:
输入为1个正整数
输出描述:
输出为所有合法的字符串,用英文逗号隔开。
code:
#left为可添加的剩余(的个数
#right为可添加的剩余)的个数
#递归树的思想
def get(res,string,left,right):
# 当所有可用的(和)个数都为0则返回符合要求的括号字符串
if left==0 and right==0:
res.append(string)
return
if left>0:
#如果(还有剩余,先添加(,同时left-1
get(res,string+"(",left-1,right)
#如果)还有剩余且剩余)多于剩余(,则添加),同时right-1
if right>0 and right>left:
get(res,string+")",left,right-1)
else:
#如果n个(已经用完,则直接剪枝
get(res,string+")"*right,left,0)
if __name__ == '__main__':
n= int(input())
string="("
res=[]
get(res,string,n-1,n)
print(",".join(res))