最长公共子序列
来源:互联网 发布:linux一键搭建squid 编辑:程序博客网 时间:2024/05/29 19:32
参考博客:点这里。
Input示例
abcicbaabdkscab
Output示例
abca
#include <iostream>#include <cstring>using namespace std;int c[1001][1001], b[1001][1001];void LSC(int n, int m, string x, string y){ int i, j; for(i = 0; i <= n; i++) c[i][0] = 0; for(j = 0; j <= m; j++) c[0][j] = 0; for(i = 1; i <= n; i++) { for(j = 1; j <= m; j++) { if(x[i-1] == y[j-1]) { c[i][j] = c[i-1][j-1] + 1; b[i-1][j-1] = 0; } else { if(c[i-1][j] >= c[i][j-1]) { c[i][j] = c[i-1][j]; b[i-1][j-1] = 1; } else{ c[i][j] = c[i][j-1]; b[i-1][j-1] = -1; } } } }}void S_LSC(string x, int i, int j){ if(i == 0 || j == 0) return; if(b[i-1][j-1] == 0) { S_LSC(x, i-1, j-1); cout << x[i-1]; } if(b[i-1][j-1] == 1) { S_LSC(x, i-1, j); } if(b[i-1][j-1] == -1) { S_LSC(x, i, j-1); }}int main(){ string x, y; int n, m; cin >> x >> y; n = x.length(); m = y.length(); LSC(n, m, x, y); S_LSC(x, n, m); return 0;}
阅读全文
0 0
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列...
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- HDU 1087 Super Jumping! Jumping! Jumping!
- 【操作系统】记录的成组误区
- 根文件系统中各个常用目录简介
- 理论知识:电路基础知识
- stm32f407部分外设驱动,can总线,定时器,gpio,串口,系统时钟等
- 最长公共子序列
- Java面试题:如何用java代码写一个堆栈
- 校招编程题:求最优解题方案
- 再探进程间通信
- keytool获取apk包的MD5
- Linux学习一:几个常用的命令
- algodoo(物理沙盒) v2.0.0中文免费版下载附教程
- 克隆Linux系统后找不到eth0网卡问题
- 解决AndroidStudio导入项目在 Building gradle project info 一直卡住