动态规划---最长公共子序列
来源:互联网 发布:大话西游服务端源码 编辑:程序博客网 时间:2024/05/22 05:02
#include <iostream>
#include <string>
#include <cstring>
using namespacestd;
const int maxn =1000;
//memory 可以优化至min(m,n) + o(1)
int num[maxn][maxn];
int res[2][maxn];
int main()
{
string a,b;
while (cin >> a >> b) {
memset(num,0,sizeof(num));
memset(res,0,sizeof(res));
int m = a.size(),n = b.size();
//空间O(m * n)
for (int i =1; i <= m; i ++) {
for (int j =1; j <= n; j ++) {
if (a[i -1] == b[j -1]) {
num[i][j] =num[i -1][j -1] +1;
}
elsenum[i][j] =max(num[i -1][j],num[i][j -1]);
}
}
//空间优化可至O(2 * min(m,n)),以下为O(2 * max(m,n))
int pos =0;
for (int i =0; i < m ; i ++) {
for (int j =0; j < n; j ++) {
if (a[i] == b[j])
res[pos][j +1] =res[!pos][j] +1;
else
res[pos][j +1] =max(res[pos][j],res[!pos][j +1]);
}
pos = !pos;
}
cout <<num[m][n] <<endl;
cout <<res[!pos][n] <<endl;
}
return0;
}
- 最长公共子序列&&最长公共子串---[动态规划]
- 动态规划-最长公共子序列、最长公共子串
- 动态规划之最长公共子序列
- 动态规划 ------- 最长公共子序列
- 动态规划实现最长公共子序列
- 【动态规划】最长公共子序列LCS
- 动态规划--最长公共子序列
- 动态规划:最长公共子序列
- 动态规划解决最长公共子序列
- 最长公共子序列-动态规划DP
- 动态规划--最长公共子序列
- 最长公共子序列(动态规划)
- 动态规划解决最长公共子序列
- 最长公共子序列(动态规划)
- 动态规划 最长公共子序列
- 动态规划 - 最长公共子序列
- 动态规划之最长公共子序列
- 最长公共子序列 [动态规划]
- Java 静态变量生命周期
- CSS3阴影 box-shadow的使用和技巧总结
- LinearLayout 的layout_gravity使用
- 初窥Linux 之 数据流重定向
- Intellij IDEA打开就闪退或关闭
- 动态规划---最长公共子序列
- c Get方式请求网络接口
- 机器学习----贝叶斯分类器(贝叶斯决策论和极大似然估计)
- LLVM学习笔记(8)
- 关于出现php -m和phpinfo不一致的问题
- 奇技淫巧系列
- SQLServer提示评估期已过解决方案
- idea_life_2
- 从操作数据库谈到Template模式