Common Subsequence

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 34819 Accepted Submission(s): 15901

Problem Description
A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = <x1, x2, ..., xm> another sequence Z = <z1, z2, ..., zk> is a subsequence of X if there exists a strictly increasing sequence <i1, i2, ..., ik> of indices of X such that for all j = 1,2,...,k, xij = zj. For example, Z = <a, b, f, c> is a subsequence of X = <a, b, c, f, b, c> with index sequence <1, 2, 4, 6>. Given two sequences X and Y the problem is to find the length of the maximum-length common subsequence of X and Y.
The program input is from a text file. Each data set in the file contains two strings representing the given sequences. The sequences are separated by any number of white spaces. The input data are correct. For each set of data the program prints on the standard output the length of the maximum-length common subsequence from the beginning of a separate line.


Sample Input

abcfbc abfcab

programming contest

abcd mnp

Sample Output

4

2

0

Source
Southeastern Europe 2003


解析:最长公共子序列。


```
#include
#include
#include
using namespace std;

char s1[500], s2[500];

int dp[500][500];

int lcs()

{

int m = strlen(s1), n = strlen(s2);

for(int i = 0; i <= m; ++i)

dp[i][0] = 0;

for(int i = 0; i <= n; ++i)

dp[0][i] = 0;

for(int i = 1; i <= m; ++i){

for(int j = 1; j <= n; ++j){

if(s1[i-1] == s2[j-1])

dp[i][j] = dp[i-1][j-1]+1;

else

dp[i][j] = max(dp[i][j-1], dp[i-1][j]);

}

}

return dp[m][n];

}

int main()

{

while(~scanf("%s%s", s1, s2)){

int res = lcs();

printf("%d\n", res);

}

return 0;

}


<br>
因为进行状态转移的时候,只与前一个状态有关,所以可以用[滚动数组](http://blog.csdn.net/insistgogo/article/details/8581215)进行优化来减少所需存储空间。

include

include

include

using namespace std;

char s1[500], s2[500];

int dp[2][500];

int lcs()

{

int m = strlen(s1), n = strlen(s2);

memset(dp, 0, sizeof dp);

for(int i = 1; i <= m; ++i){

for(int j = 1; j <= n; ++j){

if(s1[i-1] == s2[j-1])

dp[i%2][j] = dp[(i-1)%2][j-1]+1;

else

dp[i%2][j] = max(dp[i%2][j-1], dp[(i-1)%2][j]);

}

}

return dp[m%2][n];

}

int main()

{

while(~scanf("%s%s", s1, s2)){

int res = lcs();

printf("%d\n", res);

}

return 0;

}

HDU 1159 Common Subsequence(POJ 1458)的更多相关文章

  1. HDU 1159 Common Subsequence

    HDU 1159 题目大意:给定两个字符串,求他们的最长公共子序列的长度 解题思路:设字符串 a = "a0,a1,a2,a3...am-1"(长度为m), b = "b ...

  2. HDU 1159 Common Subsequence 最长公共子序列

    HDU 1159 Common Subsequence 最长公共子序列 题意 给你两个字符串,求出这两个字符串的最长公共子序列,这里的子序列不一定是连续的,只要满足前后关系就可以. 解题思路 这个当然 ...

  3. HDU 1159 Common Subsequence 公共子序列 DP 水题重温

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 Common Subsequence Time Limit: 2000/1000 MS (Jav ...

  4. hdu 1159 Common Subsequence(最长公共子序列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 Common Subsequence Time Limit: 2000/1000 MS (Jav ...

  5. hdu 1159 Common Subsequence(最长公共子序列 DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 Common Subsequence Time Limit: 2000/1000 MS (Jav ...

  6. HDU 1159 Common Subsequence(裸LCS)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1159 Common Subsequence Time Limit: 2000/1000 MS (Jav ...

  7. HDU 1159 Common Subsequence【dp+最长公共子序列】

    Common Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  8. (最长公共子序列 暴力) Common Subsequence (poj 1458)

    http://poj.org/problem?id=1458 Description A subsequence of a given sequence is the given sequence w ...

  9. hdu 1159 Common Subsequence 【LCS 基础入门】

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1159 http://acm.hust.edu.cn/vjudge/contest/view.action ...

随机推荐

  1. awk之随机函数rand()和srand()

    awk之随机函数rand()和srand() 分类: LINUX 文件: abcdefg ...... 现在想要随机抽取5列组成下面的内容,允许重复: cffab ...... awk -F '' ' ...

  2. 关于python ide

    关于python ide: 在本机上正经写代码: PyCharm,社区版免费,专业版 $199 每年. 在本机上写几行脚本: ipython 或者 pyipython. 在服务器调试的时候微调代码:v ...

  3. Unable to use slave's temporary directory /tmp - Can't create/write to file '/tmp/SQL_LOAD-' (Errcode: 17)

    这个错误时在Mysql主从配置产生的,最后找到这个Mysql的一个bug http://bugs.mysql.com/bug.php?id=62055 bug的主要原因是:打开文件的函数中指定打开模式 ...

  4. centos配置IP地址

    1. vi /etc/sysconfig/network-scripts/ifcfg-eth0 2. DEVICE=eth1HWADDR=00:0C:29:D2:9A:F5TYPE=EthernetU ...

  5. 使用MyBatis_Generator生成Dto、Dao、Mapping

    由于MyBatis属于一种半自动的ORM框架,所以主要的工作将是书写Mapping映射文件,但是由于手写映射文件很容易出错,所以查资料发现有现成的工具可以自动生成底层模型类.Dao接口类甚至Mappi ...

  6. MAC信息摘要

    MAC(Message Authentication Code ,消息认证码算法)是含有密钥散列函数算法,兼容MD和SHA算法的特性,并在此基础上加入了密钥.因此,MAC也称为HMAC.       ...

  7. 在iframe的父级作用域操作,ifame中的元素。。

    frames["iframe的name"].SchDatas SchDatas为方法名js中 frames["iframe的name"].document.ge ...

  8. 怎样利用kettle官方社区查找关于carte服务的设置

    原创作品,出自 "深蓝的blog" 博客,转载时请务必注明出处.否则有权追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/ar ...

  9. Tomcat虚拟目录

    x先来看一段server.xml文件里的配置: <Host appBase="" autoDeploy="true" debug="0" ...

  10. 使用json遇到的问题

    JSON JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立 ...