有什么网站可以自己做书,微商城官网登陆入口,seo如何优化图片,天津教育网站官网首先#xff0c;有俩参数分别是s1,s2#xff0c;那就要用二维数组. 确定状态maxlen(i,j)#xff0c;表示s1第i个与s2第j个元素组成的最长公共子序列个数 再找临界状态#xff1a;maxlen(i,0)0,maxlen(0,j)0 再找状态转移方程#xff1a; 如果s1第i-1个元素和s2第i-1个…首先有俩参数分别是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个元素不相等那么maxleni,jmax(maxlen(i,j-1)maxlen(i-1,j) 最后输出maxlen(len1,len2)就可以了
#includeiostream
#includecstring
using namespace std;
char sz1[1000] ;
char sz2[1000];
int maxlen[1000][1000];
int main(){while(cinsz1sz2){int length1 strlen( sz1);int length2 strlen( sz2);int ntmp;int i,j;for(i 0;i length1;i) maxlen[i][0]0;for(j0;jlength2;j)maxlen[0][j]0;for(i1;ilength1;i){for(j1;jlength2;j){if(sz1[i-1]sz2[j-1])maxlen[i][j]maxlen[i-1][j-1]1;else maxlen[i][j]max(maxlen[i-1][j],maxlen[i][j-1]);} }coutmaxlen[length1][length2]endl;}return 0;
}