动态规划刷题集python代码
Posted dylan9
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划刷题集python代码相关的知识,希望对你有一定的参考价值。
1 最长公共子序列长度
def lcs(x,y,m,n): c = [[0]*(n+1)]*(m+1) print(len(c),len(c[0])) for i in range(m): for j in range(n): if x[i]==y[j]: c[i+1][j+1]=c[i][j]+1 else: c[i+1][j+1]=max(c[i+1][j],c[i][j+1]) return c[m][n] x = [1,3,2,5,6] y = [6,3,2,4,5,7,6] m,n = 5,7 print(lcs(x,y,m,n))
变形有最短编辑距离
2 最长上升子序列长度
def lis(x,m): if m == 0: return 0 c = [1]*m #c[i]为以i下标为结尾的最长上升子序列长度,如果m不为0,那么结果至少为1 for i in range(m): for j in range(i): if x[i]>x[j]: c[i] = max(c[j]+1,c[i]) return max(c) x = [2,1,5,7,10,4] m = 6 print(lis(x,m))
3
以上是关于动态规划刷题集python代码的主要内容,如果未能解决你的问题,请参考以下文章