首先,有俩参数分别是s1,s2,那就要用二维数组.
确定状态maxlen(i,j),表示s1第i个与s2第j个元素组成的最长公共子序列个数
再找临界状态:maxlen(i,0)=0,maxlen(0,j)=0
再找状态转移方程:
如果s1第i-1个元素和s2第i-1个元素相等,那么maxlen(i,j)=maxlen(i-1,j-1)+1
如果s1第i-1个元素和s2第i-1个元素不相等那么maxlen(i,j)=max(maxlen(i,j-1)+maxlen(i-1,j))
最后输出maxlen(len1,len2)就可以了
#include<iostream>
#include<cstring>
using namespace std;
char sz1[1000] ;