【python招商银行信用卡中心】寻找合法字符串?

题目:给出一个正整数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))

【python招商银行信用卡中心】寻找合法字符串?_第1张图片

你可能感兴趣的:(【python招商银行信用卡中心】寻找合法字符串?)