最长公共子序列+元素打印
来源:互联网 发布:windows api大全 编辑:程序博客网 时间:2024/05/18 05:07
代码:
#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int maxn = 100+10;char a[maxn],b[maxn];int dp[maxn][maxn];int path[maxn][maxn];void print(int len1 , int len2){if(len1 < 0 || len2 < 0) return ;if(path[len1][len2] == 1){print(len1-1,len2-1);printf("%c",a[len1]);}else if(path[len1][len2] == 2){print(len1-1,len2);}else {print(len1,len2-1);}}int main(){while(scanf("%s%s",a+1,b+1)== 2){int len1 = strlen(a+1);int len2 = strlen(b+1);for(int i = 0; i <= len2; i++) dp[0][i] = 0; for(int i = 1; i <= len1; i++){for(int j = 1; j <= len2; j++){if(a[i] == b[j]){dp[i][j] = dp[i-1][j-1] + 1;path[i][j] = 1;}else {//dp[i][j] = max(dp[i-1][j],dp[i][j-1]);if(dp[i-1][j] > dp[i][j-1]){dp[i][j] = dp[i-1][j] ;path[i][j] = 2;}else {dp[i][j] = dp[i][j-1];path[i][j] = 3;}}}} printf("最长公共子序列的长度为:");printf("%d\n",dp[len1][len2]);printf("最长公共子序列为:");print(len1,len2); //递归打印 printf("\n");}return 0;}
阅读全文
0 0
- 最长公共子序列+元素打印
- 最长公共子序列+打印路径
- 最长公共子序列打印路径
- 最长公共子序列(可打印所有子序列)
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列...
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- MySQL自动删除指定时间以前的记录
- log4z 快速使用教程
- ubuntu14.04+GTX1060 重新安装显卡驱动
- wx.readBLECharacteristicValue返回参数的问题
- apk反编译
- 最长公共子序列+元素打印
- jQuery源码分析一
- Canvas的变换
- unity的2D中物体在Scene窗口中可以看到,但在Game窗口中看不到
- PIL IOError: cannot open resource处理
- javascript 数组方法
- iReport 报表展示报错:Error filling print... Error evaluating expression
- GPU渲染流程学习_02_阴影
- 背包问题