poj 1458 Common Subsequence (最长公共子序列)
2015-10-28 20:23
204 查看
http://poj.org/problem?id=1458
Common Subsequence
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.
Input
The program input is from the std input. Each data set in the input contains two strings representing the given sequences. The sequences are separated by any number of white spaces. The input data are correct.
Output
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
这是一个裸的最长公共子序列,题目意思是给出两个字符串,求他们的最长公共子序列
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <limits>
#include <queue>
#include <stack>
#include <vector>
#include <map>
using namespace std;
#define N 1400
#define INF 0x3f3f3f3f
#define PI acos (-1.0)
#define EPS 1e-8
#define met(a, b) memset (a, b, sizeof (a))
typedef long long LL;
int dp
;
int same (int a, int b)
{
if (a == b) return 1;
return 0;
}
int main ()
{
char s1
, s2
;
while (~scanf ("%s%s", s1, s2))
{
met (dp, 0);
int len1 = strlen (s1), len2 = strlen (s2);
for (int i=1; i<=len1; i++)
for (int j=1; j<=len2; j++)
dp[i][j] = max (dp[i-1][j-1] + same (s1[i-1], s2[j-1]), max (dp[i-1][j], dp[i][j-1]));
printf ("%d\n", dp[len1][len2]);
}
return 0;
}
Common Subsequence
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.
Input
The program input is from the std input. Each data set in the input contains two strings representing the given sequences. The sequences are separated by any number of white spaces. The input data are correct.
Output
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
这是一个裸的最长公共子序列,题目意思是给出两个字符串,求他们的最长公共子序列
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <limits>
#include <queue>
#include <stack>
#include <vector>
#include <map>
using namespace std;
#define N 1400
#define INF 0x3f3f3f3f
#define PI acos (-1.0)
#define EPS 1e-8
#define met(a, b) memset (a, b, sizeof (a))
typedef long long LL;
int dp
;
int same (int a, int b)
{
if (a == b) return 1;
return 0;
}
int main ()
{
char s1
, s2
;
while (~scanf ("%s%s", s1, s2))
{
met (dp, 0);
int len1 = strlen (s1), len2 = strlen (s2);
for (int i=1; i<=len1; i++)
for (int j=1; j<=len2; j++)
dp[i][j] = max (dp[i-1][j-1] + same (s1[i-1], s2[j-1]), max (dp[i-1][j], dp[i][j-1]));
printf ("%d\n", dp[len1][len2]);
}
return 0;
}
相关文章推荐
- iOS开发UI篇—CAlayer层的属性(一)
- 对QT namespace UI的理解
- jira插件带ui界面和几种方式
- UISlider滑条
- UISearchController
- UITextView
- UIDatePicker
- E - Subsequence
- uestc 1222 Sudoku
- IOS UITableView的分隔线多出问题
- easyUi datebox 默认当天
- UIAlertController replaces the UIActionSheet and UIAlertView
- cordys static value 和 read from message
- UIAlertView is deprecated in iOS 8.
- Cannot reload AVD List : Value '280dpi' is not facet-valid with ......---Android studio调试错误
- Frequently Asked Questions - P-thresholds
- Druid使用起步1
- 【UI视觉】100行代码实现微信底部渐变切换效果!!!
- VerQueryValue获取文件-属性-详细信息
- iOS —— SVN出错 Description : The working copy is locked due to a previous error.