HDU 1159 Common Subsequence --- DP入门之最长公共子序列
基础的最长公共子序列
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e3+;
char c[maxn],d[maxn];
int dp[maxn][maxn];
int main()
{
while(scanf("%s%s",c,d)!=EOF)
{
memset(dp,,sizeof(dp));
int n=strlen(c);
int m=strlen(d);
for(int i=;i<n;i++)
for(int j=;j<m;j++)
if(c[i]==d[j])
dp[i+][j+]=dp[i][j]+;
else
dp[i+][j+]=max(dp[i+][j],dp[i][j+]);
printf("%d\n",dp[n][m]);
}
return ;
}
再附上一个既可以输出长度也可以输出字符串的代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=1e3+;
char s1[maxn],s2[maxn];
int b[maxn][maxn],dp[maxn][maxn];
void pr(int i,int j)
{
if(i==||j==) return ;
if(b[i][j]==)
{
pr(i-,j-);
printf("%c",s1[i]);
}
else if(b[i][j]==) pr(i-,j);
else pr(i,j-);
}
int main()
{
while(scanf("%s%s",s1,s2)!=EOF)
{
memset(b,,sizeof(b));
memset(dp,,sizeof(dp));
int len1=strlen(s1),len2=strlen(s2);
for(int i=len1;i>=;i--) s1[i]=s1[i-];//这里注意不要写成从前往后跑的
for(int i=len2;i>=;i--) s2[i]=s2[i-];
for(int i=;i<=len1;i++)
for(int j=;j<=len2;j++)
{
if(s1[i]==s2[j])
{
dp[i][j]=dp[i-][j-]+;
b[i][j]=;
}
else if(dp[i-][j]>dp[i][j-])
{
dp[i][j]=dp[i-][j];
b[i][j]=;
}
else
{
dp[i][j]=dp[i][j-];
b[i][j]=;
}
}
//这个是长度
//printf("%d\n",dp[len1][len2]);
//这个是LCS序列
pr(len1,len2);
puts("");
}
return ;
}
HDU 1159 Common Subsequence --- DP入门之最长公共子序列的更多相关文章
- HDU 1159 Common Subsequence:LCS(最长公共子序列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 题意: 求最长公共子序列. 题解: (LCS模板题) 表示状态: dp[i][j] = max ...
- HDU 1159 Common Subsequence (动态规划、最长公共子序列)
Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- HDU 1159 Common Subsequence
HDU 1159 题目大意:给定两个字符串,求他们的最长公共子序列的长度 解题思路:设字符串 a = "a0,a1,a2,a3...am-1"(长度为m), b = "b ...
- HDU 1159 Common Subsequence 最长公共子序列
HDU 1159 Common Subsequence 最长公共子序列 题意 给你两个字符串,求出这两个字符串的最长公共子序列,这里的子序列不一定是连续的,只要满足前后关系就可以. 解题思路 这个当然 ...
- hdu 1159:Common Subsequence(动态规划)
Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- hdu 1159 Common Subsequence(最长公共子序列 DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 Common Subsequence Time Limit: 2000/1000 MS (Jav ...
- hdu 1159 Common Subsequence 【LCS 基础入门】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1159 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- HDU 1159 Common Subsequence 公共子序列 DP 水题重温
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 Common Subsequence Time Limit: 2000/1000 MS (Jav ...
- HDU 1159 Common Subsequence (dp)
题目链接 Problem Description A subsequence of a given sequence is the given sequence with some elements ...
随机推荐
- 设置二级域名共享一级域名Cookie和删除共享Cookie
设置共享Cookie: 二级域名要想共享一级域名的cookie,只需要设置cookie.Domain = ".一级域名.com"; 删除共享Cookie: HttpCook ...
- spring 缓存(spring自带Cache)(入门)
spring的缓存机制,是方法纬度的缓存机制, 这就意味着我们并不用关注 底层是否使用了数据库以及通过什么方式访问的数据库: 因此,此缓存方法既适用于dao层,也适用于service层. spring ...
- select2
.select2-container .select2-choice { height: 34px; line-height: 34px; } .自定义 组件高度 在css 里面设置 .select2 ...
- Hadoop! | 大数据百科 | 数据观 | 中国大数据产业观察_大数据门户
你正在使用过时的浏览器,Amaze UI 暂不支持. 请 升级浏览器 以获得更好的体验! 深度好文丨读完此文,就知道Hadoop了! 来源:BiThink 时间:2016-04-12 15:1 ...
- 怎样用Lodrunner测试WAP站点的性能(两种解决方案)
其实用IE就可以的!!!! 1.借助opera实现对WAP站点的录制 第一:安装opera软件 第二:Lodrunner选择Web(HTTP/HTML)协议 第三:Lodrunner的Applicat ...
- java常量池存放在哪里
运行以下方法: public class Test { public static void main(String[] args) { String str = "abc"; c ...
- 深入理解 CSS3 弹性盒布局模型
Web 应用的样式设计中,布局是非常重要的一部分.布局用来确定页面上不同组件和元素的尺寸和位置.随着响应式用户界面的流行,Web 应用一般都要求适配不同的设备尺寸和浏览器分辨率.响应式用户界面设计中最 ...
- C\C++ sizeof 陷阱&&总结
今天使用动态数组,本来想通过sizeof 获取动态数据,结果出现了错误. 先对自己做个测试,能做出下面这个题目,并做出合理解释,可以不用往下看了. ][]; cout<< cout< ...
- FineUI第十三天---`列布局
这是经典的列布局: <x:Panel runat= <Items> ...
- 第四章第四个例题(LRJ)
半年了,最起码的编程能力也谈不上啊,思维神马就更不不敢说了. 互联网时代讲求效率,走得慢和不走没有区别了. The war is on. (buhuidetiduokanduodajibianyehu ...