1159 Common Subsequence
2015-08-06 23:53
387 查看
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
Sample Output
Source
Southeastern Europe 2003
经典的动态规划题。最长公共子序列。
根据题意写出dp公式
c[i][j]=0 (i==0||j==0)
c[i][j]=c[i-1][j-1]
(i>0&&j>0&&a[i-1]==b[j-1])
c[i][j]=max(c[i-1][j],c[i][j-1])
(i>0&&j>0&&a[i-1]!=b[j-1])
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
经典的动态规划题。最长公共子序列。
根据题意写出dp公式
c[i][j]=0 (i==0||j==0)
c[i][j]=c[i-1][j-1]
(i>0&&j>0&&a[i-1]==b[j-1])
c[i][j]=max(c[i-1][j],c[i][j-1])
(i>0&&j>0&&a[i-1]!=b[j-1])
#include<stdio.h> #include<string.h> char a[2015]; char b[2015]; int c[2015][2015]; int main() { int m,n; while(scanf("%s%s",a,b)!=EOF) { m=strlen(a); n=strlen(b); for(int i=0;i<=m;i++) { c[i][0]=0; } for(int i=0;i<=n;i++) { c[0][i]=0; } for(int i=1;i<=m;i++) { for(int j=1;j<=n;j++) { if(a[i-1]==b[j-1]) c[i][j]=c[i-1][j-1]+1; else if(c[i][j-1]>=c[i-1][j]) c[i][j]=c[i][j-1]; else c[i][j]=c[i-1][j]; } } printf("%d\n",c[m] ); } }
相关文章推荐
- Codeforces Round #313 Equivalent Strings(递归)
- 错误代码: 1066 Not unique table/alias: 'c'
- burp suite使用(一) --- 抓包,截包,改包
- muduo::TimerId、Timer、TimerQueue分析
- HDOJ Queuing 2604【求矩阵+矩阵快速幂】
- iOS中UITextView的操作技巧
- 梭子鱼垃圾邮件网关-Barracuda Spam & Virus Firewall Email Alert: outQueueHigh
- SPOJ-DQUERY-主席树求区间不同数个数模板
- “Error setting expression 'id' with value '[Ljava.lang.String;@e41d4a'”解决办法!
- hdoj 1242 Rescue [BFS]
- ui->setup(this); shortcut can't show
- iOS学习--UIScrollView 原理详解
- UE4信息交互-GetAllActorsOfClass遍历搜索
- 简约至上——交互设计四策略笔记
- 01-复杂度2. Maximum Subsequence Sum (25)
- HDU - 1711 Number Sequence KMP字符串匹配
- iOS 动画总结----UIView动画
- (素材源码)swanzhu学IOS(二)UI之_NSTimer
- 1242 Rescue【bfs】
- 1041. Be Unique (20)