hdu 1159Common Subsequence(dp 最大不连续的子序列)
2016-05-19 09:08
435 查看
Common Subsequence
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 32764 Accepted Submission(s): 14828
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
Recommend
Ignatius
设序列X={x1,x2,…,xm}和Y={y1,y2,…,yn}的最长公共子序列为Z={z1,z2,…,zk} ,则
(1)若xm=yn,则zk=xm=yn,且zk-1是xm-1和yn-1的最长公共子序列。
(2)若xm≠yn且zk≠xm,则Z是xm-1和Y的最长公共子序列。
(3)若xm≠yn且zk≠yn,则Z是X和yn-1的最长公共子序列。
dp[i][j] 表示i到j的最长序列长度
当str1==str2 dp[i][j]=dp[i-1][j-1]+1
当str1!=str2 dp[i][j]在dp[i-1][j],dp[i][j-1]取一个最大值
#include<iostream> #include<cstring> #include<string> using namespace std; string a,b; int c[1001][1001]; int main() { int n,m,k,i,j; while(cin>>a>>b) { memset(c,0,sizeof(c)); n=a.size(); m=b.size(); for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { if(a[i-1]==b[j-1]) { c[i][j]=c[i-1][j-1]+1; } else c[i][j]=max(c[i-1][j],c[i][j-1]); } } cout<<c [m]<<endl; } }
相关文章推荐
- android Activity runOnUiThread() 方法使用
- UICollectionView-网格视图
- 02.LoT.UI 前后台通用框架分解系列之——灵活的菜单栏
- AdapterView.AdapterContextMenuInfo
- 01.LoT.UI 前后台通用框架分解系列之——小图片背景全屏显示(可自动切换背景)
- complex类 序列化时 IsRequired = true 问题
- Android异步更新UI的四种方式
- 更换证书后 打包异常 "UUID not found"/ "xxxx描述文件 not found"
- 125_ListView和UI卡顿
- hibernateTransactionManager 与REQUIRES_NEW的问题
- 2016 UESTC Training for Search Algorithm & String(A B C E I K)
- POJ 1947-Rebuilding Roads-(树形DP)
- 用JS代码怎么实现两个文本框的Value相乘
- UITableView 抽取及控制器的调用整合
- Query采用each方法遍历
- Exception in thread "main" org.hibernate.QueryException: illegal attempt to dereference collection
- LeetCode 334. Increasing Triplet Subsequence
- codeforces D. Maximum Value
- 347. Top K Frequent Elements
- iOS开发系列--UITableView全面解析