资源描述:
《动态规划法求解最长公共子序列(含Java代码).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、公共子序列问题徐康123183一.算法设计假设有两个序列X和Y,假设X和Y分别有m和n个元素,则建立一个二维数组C[(m+1)*(n+1)],记录Xi与Yj的LCS的长度。将C[i,j]分为三种情况:若i=0或j=0时,C[i,j]=0;若i,j>0且X[i]=Y[j],C[i,j]=C[i-1,j-1]+1;若i,j>0且X[i] Y[j],C[i,j]=max{C[i-1,j],C[i,j-1]}。再使用一个m*n的二维数组b,b[i,j]记录C[i,j]的来向:若X[i]=Y[j],则B[i,j]中记入“↖”,记此时b[i,j]=1;若X[
2、i] Y[j]且C[i-1,j]>C[i,j-1],则b[i,j]中记入“↑”,记此时B[i,j]=2;若X[i] Y[j]且C[i-1,j]