HDU-1503 Advanced Fruits(LCS)
来源:互联网 发布:返利商城APP源码 编辑:程序博客网 时间:2024/06/06 01:20
题意:
给两个字符串,让你寻找一个最短的字符串,满足其子序列能够构成这两个字符串。
思路:
简单lcs,求出最长公共子序列之后,将两个串构造在一起即可。
代码:
#include <bits/stdc++.h>using namespace std;char s1[105], s2[105];int len1, len2;string ans, tmp;int dp[105][105];bool col[2][105];void lcs(){memset(dp, 0, sizeof dp);memset(col, 0, sizeof col); for(int i = 1; i <= len1; ++i)for(int j = 1; j <= len2; ++j){if(s1[i] == s2[j])dp[i][j] = dp[i-1][j-1]+1;else dp[i][j] = max(dp[i-1][j], dp[i][j-1]);}int x = len1, y = len2;while(x && y){if(s1[x] == s2[y]){col[0][x] = 1;col[1][y] = 1;--x, --y;}else if(dp[x-1][y] > dp[x][y-1])--x;else--y;}}int main(){while(cin >> s1+1 && cin >> s2+1){len1 = strlen(s1+1);len2 = strlen(s2+1);lcs();ans = "";int x = 1, y = 1;while(1){tmp = "";while(x <= len1 && !col[0][x])tmp += s1[x++];ans += tmp;tmp = "";while(y <= len2 && !col[1][y])tmp += s2[y++];ans += tmp;if(x > len1 && y > len2) break;ans += s1[x];++x, ++y;}cout << ans << endl;}return 0;}
继续加油~
阅读全文
1 0
- HDU 1503 Advanced Fruits[ LCS ]
- hdu 1503 Advanced Fruits (LCS)
- HDU 1503--Advanced Fruits【LCS】
- HDU 1503 Advanced Fruits(LCS)
- HDU 1503 Advanced Fruits LCS -
- HDU 1503 Advanced Fruits【LCS】
- HDU-1503 Advanced Fruits(LCS)
- hdu 1503 Advanced Fruits DP LCS
- hdu 1503 Advanced Fruits(LCS)
- HDU 1503 Advanced Fruits (LCS,DP)
- hdu 1503 Advanced Fruits (LCS)
- HDU 1503 Advanced Fruits (LCS升级版)
- HDU 1503 Advanced Fruits (LCS)
- hdu 1503 Advanced Fruits 打印LCS模板
- HDU 1503-Advanced Fruits(动态规划,LCS)
- HDU-1503 Advanced Fruits(DP LCS)
- HDOJ 1503 Advanced Fruits(LCS)
- hdoj-1503-Advanced Fruits【LCS】
- 动态代理_ProxyFactory
- [leetcode] 532. K-diff Pairs in an Array
- springboot初步学习....初学者应该掌握的注解...
- 创建一个 Dynamic Web Project
- Windows Server2016安装Dynamics 365报InstallWindowsSearchAction操作失败的解决方法
- HDU-1503 Advanced Fruits(LCS)
- ESP8266学习经历之开发环境搭建
- matlab读取多个excel某列数据
- 1032. 挖掘机技术哪家强(20)
- matlab 大量数据写入excel
- TensorFlow小试牛刀(2):GAN生成手写数字
- makefile基本结构
- Group by and Order by
- matlab大规模交叉节点判断