最长公共子序列
2015-08-13 17:05
288 查看
class LCS { public: int findLCS(string A, string B) { int m=A.size(); int n=B.size(); int**mn=new int*[m+1]; for(int i=0;i<m+1;i++) { mn[i]=new int[n+1]; memset(mn[i],0,sizeof(int)*(n+1)); } //接下来进行动态规划,获得值 for(int i=1;i<=m;i++) { for(int j=1;j<=n;j++) { if(A.at(i-1)==B.at(j-1)) { mn[i][j]=mn[i-1][j-1]+1; } else { if(mn[i][j-1]>mn[i-1][j]) { mn[i][j]=mn[i][j-1]; } else { mn[i][j]=mn[i-1][j]; } } } } int result=mn[m] ; for(int i=m,j=n;i>=1&&j>=1;) { if(A.at(i-1)==B.at(j-1)) { cout<<A.at(i-1)<<" "; i--; j--; } else { if(mn[i][j-1]>mn[i-1][j]) { j--; } else { i--; } } } cout<<endl; for(int i=0;i<m+1;i++) { delete[] mn[i]; } return result; } }; int main() { LCS mm; cout<<mm.findLCS("1A2C3D4B56","B1D23CA45B6A"); return 0; }
相关文章推荐
- autofac
- 程序优化小记
- 计算机系统(三)CPU读并解释存储在存储器中的指令
- Android API Guides学习4——Fragments
- [LeetCode] Best Time to Buy and Sell Stock II
- LINUX图文教程
- tomcat同时部署两个项目的问题
- Linux 内核下发送 SYN 段
- VNC的安装与配置
- c++ 宏的使用
- 五、改革宏观经济调控体制
- HDOJ 1162 Eddy's picture 最小生成树 Kruscal && Prim
- Dom4j解析xml文件-操作节点和属性及写入其他xml文件
- Oracle索引详解
- MySQL 存储引擎 MyISAM 与 InnoDB 的对比
- 【Deep Learning】林轩田机器学习技法
- 网络篇----NSURLConnection断点下载
- 修复山寨版的J-Link
- 优化Java堆大小5温馨提示
- 计算机系统(二)程序被其他程序翻译成不同的格式 Compiler