题解 | #括号区间匹配#

括号区间匹配

https://www.nowcoder.com/practice/e391767d80d942d29e6095a935a5b96b

#动态规划简单求解
s=input()
lenth=len(s)
dp=[[0]*lenth for _ in range(lenth) ]
def match(a,b):
    if a=='(' and b==')':return True
    if a=='[' and b==']':return True
    return False
for i in range(len(dp)):#初始化区间长度为1时最少插入次数为1
    dp[i][i]=1
for part_len in range(2,lenth+1):
    for i in range(lenth-part_len+1):
        j=i+part_len-1
        dp[i][j]=float('inf')
        if match(s[i],s[j]):
            dp[i][j]=dp[i+1][j-1]
        for k in range(i,j):
            dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j])
print(dp[0][lenth-1])

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务