最长公共子序列 路径还原
来源:互联网 发布:阀门网络销售 编辑:程序博客网 时间:2024/04/30 04:05
输入
第1行:字符串A
第2行:字符串B
(A,B的长度 <= 1000)
输出
输出最长的子序列,如果有多个,随意输出1个。
输入示例
abcicba
abdkscab
输出示例
abca
#include<stdio.h>#include <cstring>#include <algorithm>using namespace std;const long long INF = 0x3f3f3f3f;typedef long long LL;int dp[1005][1005];char st1[1005];char st2[1005];char ans[1005];int main(){ scanf("%s",st1); scanf("%s",st2); int l1 = strlen(st1); int l2 = strlen(st2); for (int i = 1;i <= l1; ++i){ for (int j = 1;j <= l2; ++j){ if (st1[i-1]==st2[j-1]){ dp[i][j] = dp[i-1][j-1]+1; }else dp[i][j] = max(dp[i-1][j],dp[i][j-1]); } } //printf("%d\n",dp[l1][l2]); int k = dp[l1][l2]; ans[1001] = {'\0'}; int i = l1,j = l2; while (i&&j){ if (st1[i-1]==st2[j-1]&&dp[i][j]==dp[i-1][j-1]+1){ ans[--k] = st1[i-1]; i--;j--; }else if (st1[i-1]!=st2[j-1]&&dp[i-1][j]>dp[i][j-1]){ i--; }else j--; } printf("%s\n",ans); return 0;}
阅读全文
0 0
- 最长公共子序列 路径还原
- HDU 1503 Advanced Fruits(还原最长公共子序列、记录路径)
- 最长公共子序列+打印路径
- 最长公共子序列打印路径
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列...
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 内存分配、野指针、指针、数组相关
- text-align:justify两端对齐的使用及注意事项
- OJ_4150
- 云栖TechDay第39期设计凝聚的价值,阿里巴巴集团UED委员会优秀讲师从新零售、物联网和云计算三个不同行业看如何拥有全栈设计力,与您共享设计的价值。8月9日14点开播
- Android6.0动态权限控制
- 最长公共子序列 路径还原
- 文章学习《MobileNet教程:用TensorFlow搭建在手机上运行的图像分类器》
- Oracle表空间,用户创建
- hdu 6080 度度熊保护村庄(floydS使用技巧)
- 阿里云服务器用smtp发送邮件返回错误
- 图像语义分割之FCN和CRF
- html中加入虚线
- mybatis 用date 接收日期 格式化(否则就收的是一串时间戳)
- 判断访问用户类型(手机用户还是pc用户)