1159 Common Subsequence【lcs】
2015-10-02 11:42
399 查看
Common Subsequence
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 29199 Accepted Submission(s): 13098
[align=left]Problem Description[/align]
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.
[align=left]Sample Input[/align]
abcfbc abfcab
programming contest
abcd mnp
[align=left]Sample Output[/align]
4
2
0
lcs 模板题,直接dp 求解,因为没有注明字符串长度,这里用滚动数组来以防溢出.........
#include<stdio.h>
#include<string.h>
#define max(a,b) (a>b?a:b)
int dp[2][100005];
char a[10005],b[10005];
int main()
{
//freopen("shuju.txt","r",stdin);
while(~scanf("%s%s",a,b))
{
memset(dp,0,sizeof(dp));
int lena=strlen(a),lenb=strlen(b);
for(int i=1;i<=lena;++i)
{
for(int j=1;j<=lenb;++j)
{
if(a[i-1]==b[j-1])//更新
{
dp[i%2][j]=dp[(i-1)%2][j-1]+1;
}
else
{
dp[i%2][j]=max(dp[(i-1)%2][j],dp[i%2][j-1]);//局部最优
}
}
}
printf("%d\n",dp[lena%2][lenb]);
}
return 0;
}
相关文章推荐
- stl的priority_queue底层实现
- UGUI学习笔记3——UI组件
- 黑马程序员-----GUI
- AndroidUI 布局动画-为布局添加动画
- AndroidUI 布局动画-为布局添加动画
- SPOJ SORTBIT Sorted bit squence (数位DP,入门)
- 解决maven项目出现Dynamic Web Module 3.0 requires Java 1.6 or newer.错误
- 仿JD商城UI布局达到90%
- mysql php query steps
- String构造函数originalValue.length>size 它发生
- SpriteBuilder实际操作中如何确定合适Breaking force的值
- SpriteBuilder实际操作中如何确定合适Breaking force的值
- SpriteBuilder实际操作中如何确定合适Breaking force的值
- requestAnimationFrame在Chrome里的实现
- requestAnimationFrame在Chrome里的实现
- SpriteBuilder中关节的Breaking force属性
- SpriteBuilder中关节的Breaking force属性
- SpriteBuilder中关节的Breaking force属性
- QSqlQuery类
- [Leetcode]Letter Combinations of a Phone Number My Submissions Question Solution