hdu 1503 最长公共子序列
/*
给两个串a,b。输出一个最短的串(含等于a的子序列且含等于b的子序列)
*/
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; const int maxn=;
int dp[maxn][maxn],path[maxn][maxn];
int len,len1,len2;
char text[maxn],a[maxn],b[maxn]; void getpath()
{
int n=len,i=len1,j=len2;
while(n)
{
if(path[i][j]==)
text[n--]=a[i],i--,j--;
else if(path[i][j]==) i--;
else j--;
}
} int main()
{
int i,j,k;
a[]=b[]='';
while(~scanf("%s%s",a+,b+))
{
memset(dp,,sizeof(dp));
len1=strlen(a)-,len2=strlen(b)-;
for(i=;i<=len1;i++)
{
for(j=;j<=len2;j++)
{
if(a[i]==b[j])dp[i][j]=dp[i-][j-]+,path[i][j]=;
else
{
if(dp[i-][j]>dp[i][j-]) dp[i][j]=dp[i-][j],path[i][j]=;
else dp[i][j]=dp[i][j-],path[i][j]=;
}
}
}
len=dp[len1][len2];
getpath();
j=,k=;
for(i=;i<=len;i++)
{
while(a[j]!=text[i]) printf("%c",a[j++]);
while(b[k]!=text[i]) printf("%c",b[k++]);
printf("%c",text[i]);
j++;k++;
}
while(j<=len1) printf("%c",a[j++]);
while(k<=len2) printf("%c",b[k++]);
printf("\n");
}
return ;
}
hdu 1503 最长公共子序列的更多相关文章
- HDU - 1503 最长公共子序列记录路径
题意:先给两个水果的名字然后得出一个最短的序列包含这两个词. 思路:我一开始的思路是先求出最长公共子序列,然后做一些处理将其他的部分输出来:两种水果的字符串和最长公共子序列的字符串这三个字符串做对比, ...
- HDU 1159 最长公共子序列(n*m)
Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- HDU 1159 最长公共子序列
Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- hdu 4681 最长公共子序列+枚举
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681 #include<cstdio> #include<cstring> # ...
- 最长公共子序列(加强版) Hdu 1503 Advanced Fruits
Advanced Fruits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- hdu 1503 Advanced Fruits(最长公共子序列)
Advanced Fruits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- hdu 1503 Advanced Fruits 最长公共子序列 *
Advanced Fruits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU 1513 Palindrome(最长公共子序列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1513 解题报告:给定一个长度为n的字符串,在这个字符串中插入最少的字符使得这个字符串成为回文串,求这个 ...
- HDU 4681 String 最长公共子序列
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4681 题意: 给你a,b,c三个串,构造一个d串使得d是a,b的子序列,并且c是d的连续子串.求d最大 ...
随机推荐
- mysql添加、移除服务
sc delete 服务名 路径/bin/mysqld --install 服务名
- 学习笔记(六): Regularization for Simplicity
目录 Overcrossing? L₂ Regularization Lambda Examining L2 regularization Check Understanding Glossay Ov ...
- C++ 学习笔记 (八)重载 重写 重定义以及名字覆盖
学习C++必定会遇到重载.重写.重定义.概念的东西多也是学习C++蛋疼之处,但是还是得弄懂,学懂了也就不觉得多了. 概念,特点: 重载: 直白点说就是函数名字相同,传参的个数,类型不一样.判断标准在于 ...
- GC回收的对象
垃圾收集(Carbage Collection) java内存在运行时区域,程序计数器.java虚拟机栈.本地方法三个区域都是线程私有的内存区域,随着线程的启动和销毁而分配和回收.栈帧随着方法的调 ...
- centos6.9系统安装
1. 选择系统及下载 CentOS 5.x CentOS 6.x 50% 6.9 CentOS 7.x 50% 7.2 centos 6.9 centos 7. 最新版 https://wiki.ce ...
- [Hdu1693]Eat the Trees(插头DP)
Description 题意:在n*m(1<=N, M<=11 )的矩阵中,有些格子有树,没有树的格子不能到达,找一条或多条回路,吃完所有的树,求有多少种方法. Solution 插头DP ...
- PAT Basic 1083
1083 是否存在相等的差 给定 N 张卡片,正面分别写上 1.2.…….N,然后全部翻面,洗牌,在背面分别写上 1.2.…….N.将每张牌的正反两面数字相减(大减小),得到 N 个非负差值,其中是否 ...
- 菜鸟学Linux - 设置文件/文件夹的权限
在Linux中,我们可以对文件或文件夹设置权限(r,w,x,-).然而,对文件和文件夹的权限设置,具有不同的意义.下面,通过几个例子来了解一下权限的意义所在.在开始之前,我们需要了解几个修改权限的命令 ...
- RF、GBDT、XGBOOST常见面试算法整理
1. RF(随机森林)与GBDT之间的区别 相同点: 1)都是由多棵树组成的 2)最终的结果都是由多棵树一起决定 不同点: 1) 组成随机森林的树可以是分类树也可以是回归树,而GBDT只由回归树组 ...
- idea 占用内存优化调整
idea 占用内存优化调整 https://www.cnblogs.com/metoy/p/5967696.html https://blog.csdn.net/zdxxinlang/arti ...