HDU 1159——Common Subsequence(DP)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159
题解
#include<iostream>
#include<cstring>
using namespace std;
],B[]; //存放字符串
][]; //存放到字符串a第 i+1个字符,字符串b第 j+1个字符为止的最大长度公共子序列的长度
int main(){
while(~scanf("%s%s",A,B)){
int alen=strlen(A),blen=strlen(B); //注意头文件
;i<alen;i++){
;j<blen;j++){
if(A[i]==B[j])
dp[i+][j+]=dp[i][j]+;
else
dp[i+][j+]=max(dp[i][j+],dp[i+][j]);
}
}
printf("%d\n",dp[alen][blen]);
}
;
}
定义 dp[ i ][ j ]为 A1...Ai 和 B1...Bj 对应的 LCS(最长公共子序列)长度
那么,A1...Ai+1 和 B1...Bj+1 对应的公共子列可能是
- 当 Ai+1==Bj+1时,在 A1...Ai 和 B1...Bj 的公共子列末尾追加上 Ai+1
- A1...Ai+1 和 B1...Bj 的公共子列
- A1...Ai 和 B1...Bj+1 的公共子列
三者中的一个,则有以下递推关系成立

该递推式时间复杂度O(nm),dp[n][m]就是LCS的长度
HDU 1159——Common Subsequence(DP)的更多相关文章
- HDU 1159 Common Subsequence (dp)
题目链接 Problem Description A subsequence of a given sequence is the given sequence with some elements ...
- hdu 1159 Common Subsequence (dp乞讨LCS)
Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- hdu 1159:Common Subsequence(动态规划)
Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- hdu 1159 Common Subsequence(LCS)
Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- hdu 1159 Common Subsequence(最长公共子序列)
题目链接: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 Common Subsequence Time Limit: 2000/1000 MS (Jav ...
- hdu 1159 Common Subsequence (最长公共子序列 +代码)
Problem Description A subsequence of a given sequence is the given sequence with some elements (poss ...
- 题解报告:hdu 1159 Common Subsequence(最长公共子序列LCS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 Problem Description 给定序列的子序列是给定的序列,其中有一些元素(可能没有) ...
- HDU 1159 Common Subsequence (动态规划、最长公共子序列)
Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
随机推荐
- TypeScript进阶开发——ThreeJs基础实例,从入坑到入门
前言 我们前面使用的是自己编写的ts,以及自己手动引入的jquery,由于第三方库采用的是直接引入js,没有d.ts声明文件,开发起来很累,所以一般情况下我们使用npm引入第三方的库,本文记录使用np ...
- JIRA使用过程出现问题整理解答
转自:http://www.51testing.com/html/44/n-2820444.html 发表于:2015-5-28 10:22 作者:知乎 来源:51Testing软件测试网采编 ...
- BZOJ4034 [HAOI2015]树上操作+DFS序+线段树
参考:https://www.cnblogs.com/liyinggang/p/5965981.html 题意:是一个数据结构题,树上的,用dfs序,变成线性的: 思路:对于每一个节点x,记录其DFS ...
- Trace 2018徐州icpc网络赛 思维+二分
There's a beach in the first quadrant. And from time to time, there are sea waves. A wave ( xx , yy) ...
- Codeforces 734C. Anton and Making Potions(二分)
Anton is playing a very interesting computer game, but now he is stuck at one of the levels. To pass ...
- 【Offer】[42] 【连续子数组的最大和】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n). ...
- lambda表达式不同对象根据对象某个属性去重
1.有时候有两个list对象,我们想要去重,比如: List<User> userList和List<Person>personList 想通过User的id和Person的i ...
- HTML5为什么只需要写<!DOCTYPE HTML>?
HTML4.01中的doctype需要对DTD进行引用,因为HTML4.01基于SGML.而HTML5不基于SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为.其中,SGM ...
- 高级部分_委托、Lambda表达式、事件
委托 (1)把方法当作参数来传递的话,就要用到委托: (2)委托是一个类型,这个类型可以赋值一个方法的引用. C#使用一个类分为两个阶段,首先定义这个类,告诉编译器这个类由什么字段和方法组成:然后使用 ...
- HttpServlet类
1.我们知道让Servlet成功在服务端运行,就必须实现Servlet接口,而下面的这种方式没有直接实现Servlet接口,而是间接实现了Servlet接口: import javax.servlet ...