动态规划之最长公共子序列的求解(C++实现)
来源:互联网 发布:淘宝换货要申请吗 编辑:程序博客网 时间:2024/05/01 14:07
<span style="font-size:24px;">// LCS.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "string.h"#include "iostream"using namespace std;#define M 100#define N 100int lcsLength(char* X,char* Y);//求解两个序列的最长公共子序列的长度。void lcs(int b[][N], char* X, int i, int j);//利用求得的数据结构 b[][],帮助构建最长公共子序列。int b[M][M]={0};//用于帮助构造最优解。int _tmain(int argc, _TCHAR* argv[]){char*X ="10010101";char*Y ="010110110";cout<<"序列1: "<<X<<endl<<"序列2: "<<Y<<endl<<"最长公共子序列的长度 : "<<lcsLength(X,Y)<<endl;cout <<"最长公共子序列: ";lcs(b,X,strlen(X),strlen(X));cout<<endl;return 0;}int lcsLength(char* X,char* Y){intc[M][N]={0},//c[i,j]表示 X[i] 和 Y[j] 的 LCS 长度。m = strlen(X),n = strlen(Y);for(int i=1; i <= m; i++)for(int j = 1; j <= n; j++){if(X[i-1]==Y[j-1]){c[i][j] = c[i-1][j-1] + 1;b[i][j] = 2;}else if(c[i-1][j]>=c[i][j-1]){c[i][j] = c[i-1][j];b[i][j] = 1;}else {c[i][j] = c[i][j-1];b[i][j] =3;}}return c[m][n];}void lcs(int b[][N], char* X, int i, int j){if(i == 0 || j == 0)return;if( b[i][j] ==2){lcs(b,X,i-1,j-1);cout<<X[i-1];}else if(b[i][j] ==1)lcs(b,X,i-1,j);elselcs(b,X,i,j-1);}</span>
0 0
- 动态规划之最长公共子序列的求解(C++实现)
- C++实现动态规划求解最长公共子序列
- 动态规划求解最长公共子序列
- 动态规划求解最长公共子序列
- 动态规划求解最长公共子序列
- 最长公共子序列的动态规划求解
- 最长公共子序列的动态规划求解
- 最长公共子序列(动态规划求解)
- 动态规划求解最长公共子序列(LCS)
- 最长公共子序列问题(动态规划求解)
- 使用动态规划求解最长公共子序列(LCS)
- 动态规划求解最长公共子序列(LCS)
- 动态规划之最长公共子序列---java实现
- 动态规划之最长公共子序列问题 C++实现
- 动态规划实现最长公共子序列
- 动态规划实现最长公共子序列
- 动态规划之最长公共子序列
- 动态规划之最长公共子序列
- Lua遇到的小问题
- 逆向工程,暂时不开张
- Matlab与数学建模
- HDU 4251 划分树
- 7种形式的Android Dialog使用举例
- 动态规划之最长公共子序列的求解(C++实现)
- POJ 2417 Discrete Logging 离散对数
- Java NIO系列教程(四) Scatter/Gather
- Eclipse Java EE隐藏项目中Referenced Libraries jar包的方法
- 操作系统专题——死锁
- IOS开发Label标签相关方法的使用
- A1530 1528 1490 1533 1529 1526 破解联通4G教程
- boost::asio 之io_service
- sleep和wait的区别