这个题目其实以前写过,但是现在再看,有了简洁有效的多的解法:一个DFS就搞定了。
def construct(n):
def create(num1,num2,exp):
if num1+num2==2*n:assert(num1==n);print(exp)
if num1<n :create(num1+1,num2,(exp+'(')[::])
if num1>num2:create(num1,num2+1,(exp+')')[::])
create(0,0,'')