最长公共子序列
Posted WayToAccept
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长公共子序列相关的知识,希望对你有一定的参考价值。
状态转移方程
1.if i=0 || j=0 arr[i][j]=0
2.if str1[i]==str2[j] arr[i][j]=arr[i-1][j-1]+1 (左上角+1)
3.if str1[i]!=str2[j] arr[i][j]=max(arr[i][j-1],arr[i-1][j]) (左边或上边)
下边程序偏移1位
int arr[1001][1001]=0;
int maxStrLen(string s,string t)
int maxv=-1;
for(int i=0;i<s.size();i++)
for(int j=0;j<t.size();j++)
if(s[i]==t[j])
arr[i+1][j+1]=arr[i][j]+1;
else
arr[i+1][j+1]=arr[i][j+1]>arr[i+1][j]?arr[i][j+1]:arr[i+1][j];
if(maxv<arr[i+1][j+1])maxv=arr[i+1][j+1];
return maxv;
以上是关于最长公共子序列的主要内容,如果未能解决你的问题,请参考以下文章