败笔
''' for j in range(len2):
c = list2[j]
print(q)
if(b == c):
if q == None:
q = c
print(q)
else:
q = q+c
print('qc'+q)
else:
if q != None:
listfin.append(q)
q = None'''
def publ(list1,list2):
listfin = []
len1 = len(list1)
len2 = len(list2)
q = None
for i in range(len1):
b = list1[i]
for j in range(len2):
c = list2[j]
if b == c:
if q == None:
q = c
print(q)
else:
q = q+c
print('qc='+q)
print(listfin)
len3 = len(listfin)
for n in range(len3):
a = None
if a == None:
a = listfin[n]
else:
if len(a) < len(listfin[n]):
a = listfin[n]
return 0
listb = ['a','b','c','f','r','h']
lista = ['b','c','f','r','a','b','c','h']
print(publ(lista,listb))
是不是自己写的已经忘了
def lcs(a, b):
lena = len(a)
lenb = len(b)
c = [[0 for i in range(lenb + 1)] for j in range(lena + 1)]
flag = [[0 for i in range(lenb + 1)] for j in range(lena + 1)]
for i in range(lena):
for j in range(lenb):
if a[i] == b[j]:
c[i + 1][j + 1] = c[i][j] + 1
flag[i + 1][j + 1] = 'ok'
elif c[i + 1][j] > c[i][j + 1]:
print(c[i][j])
c[i + 1][j + 1] = c[i + 1][j]
flag[i + 1][j + 1] = 'left'
else:
c[i + 1][j + 1] = c[i][j + 1]
flag[i + 1][j + 1] = 'up'
return c, flag
def printLcs(flag, a, i, j):
if i == 0 or j == 0:
return
if flag[i][j] == 'ok':
printLcs(flag, a, i - 1, j - 1)
print(a[i - 1], end='')
elif flag[i][j] == 'left':
printLcs(flag, a, i, j - 1)
else:
printLcs(flag, a, i - 1, j)
a = 'ababd'
b = 'abgcd'
c, flag = lcs(a, b)
printLcs(flag, a, len(a), len(b))
结果: