求最长公共子序列问题
s1:AB34C s2:A1BC2 结果为:ABC
def dfs(s1,s2):
l1 = len(s1)
l2 = len(s2)
ans = [] #存放最优解
for i in range(l1): #遍历l1
li = []
for j in range(l2):#遍历l2
if s1[i] == s2[j]: #寻找两个相同的元素。
li.append(s1[i])
li.extend(dfs(s1[i+1:],s2[j+1:])) #递归的求解剩余元素。
break
if len(li)>len(ans): #如果新解比原有最优解长,则替换。
ans = li
return ans
if __name__ == '__main__':
s1 = 'abcwedsqqw'
s2 = 'bdwdwqweqqw'
print(dfs(s1,s2))#['b', 'w', 'e', 'q', 'q', 'w']