我试图以最简单的方式在LCS中实现,但是我没有得到正确的值。我得到的不是4。我不确定我的代码有什么问题:
X= ['A','B','C','B','D','A','B']
Y= ['B','D','C','A','B','A','X','Y']
m= len(X)
n= len(Y)
c={}
for i in range(1,m) :
c[i,0]=0
for j in range(0,n):
c[0,j]=0
for i in range (1,m):
for j in range (1,n):
if X[i]==Y[j]:
c[i,j]=c[i-1,j-1]+1
elif c[i-1,j] >= c[i,j-1]:
c[i,j]=c[i-1,j]
else:
c[i,j]=c[i,j-1]
print c[m-1,n-1]
print c
看起来你正在使用的索引可能是你问题的根源。如果我理解正确的话,您正在寻找长度为4的LCS'BCBA',但实际上您从未将第一个条目与任何内容进行比较,因此您没有机会匹配Y的第一个元素'B'
我对你的代码做了一些小小的修改,得到了4个解决方案:
希望这有帮助。你知道吗
下面是我用于LCS的实现,它返回
(percent_in_common, sequence_in_common)
相关问题 更多 >
编程相关推荐