【資料圖】
有關動態規劃法求解最長公共子序列問題_求最長公共子序列_動態規劃這方面的知識,估計很多人不是太了解,今天就給大家詳細的介紹一下關于動態規劃法求解最長公共子序列問題_求最長公共子序列_動態規劃的相關內容。
1、// 求LCS的長度class LCS{public: LCS(int nx, int ny, char *x, char*y); //創建二維數組c、s和一維數組a、b。
2、并進行初始化 void LCSLength(); //求最優解值(最長公共子序列長度) void CLCS(); //構造最優解(最長公共子序列) ……private: void CLCS(int i, int j); int **c, **s.m, n; char *a, *b;};int LCS::LCSLength() { for(int i=1; i<=m; i++) c[i][0]=0; for(i=1; i<=n; i++) c[0][i]=0; for (i=1; i<=m; i++) for (int j=1; j=c[i][j-1]){ c[i][j]=c[i-1][j]; s[i][j]=2; //由c[i-1][j]得到c[i][j] } else { c[i][j]=c[i][j-1]; s[i][j]=3; //由c[i][j-1]得到c[i][j] } return c[m][n]; //返回最優解值} // 構造最長公共子序列void LCS::CLCS(int i, int j){ if (i==0||j==0) return; if (s[i][j]==1){ CLCS(i-1, j-1); cout<
本文到此分享完畢,希望對大家有所幫助。
標簽: