POJ_1458_Common Subsequence
2015-08-01 17:27
369 查看
Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d
& %I64u
Submit Status Practice POJ
1458
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, x ij = 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
这是一个最长公共子序列的问题 设d(i,j)为Ai和Bj的最长公共子序列长度,当a[i]==b[j]时,d(i,j)=d(i-1,j-1)+1, else d(i,j)=max{d(i-1,j),d(i,j-1)}
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
char a[1200],b[1200];
int dp[1300][1300];
int main()
{
while(scanf("%s%s",a+1,b+1)!=EOF)
{
memset(dp,0,sizeof(dp));
int la=strlen(a+1);
int lb=strlen(b+1);
for(int i=1;i<=la;i++)
{
for(int j=1;j<=lb;j++)
{
if(a[i]==b[j]) dp[i][j]=dp[i-1][j-1]+1;
else
{
dp[i][j]=dp[i-1][j]>dp[i][j-1]?dp[i-1][j]:dp[i][j-1];
}
}
}
printf("%d\n",dp[la][lb]);
}
return 0;
}
& %I64u
Submit Status Practice POJ
1458
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, x ij = 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
这是一个最长公共子序列的问题 设d(i,j)为Ai和Bj的最长公共子序列长度,当a[i]==b[j]时,d(i,j)=d(i-1,j-1)+1, else d(i,j)=max{d(i-1,j),d(i,j-1)}
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
char a[1200],b[1200];
int dp[1300][1300];
int main()
{
while(scanf("%s%s",a+1,b+1)!=EOF)
{
memset(dp,0,sizeof(dp));
int la=strlen(a+1);
int lb=strlen(b+1);
for(int i=1;i<=la;i++)
{
for(int j=1;j<=lb;j++)
{
if(a[i]==b[j]) dp[i][j]=dp[i-1][j-1]+1;
else
{
dp[i][j]=dp[i-1][j]>dp[i][j-1]?dp[i-1][j]:dp[i][j-1];
}
}
}
printf("%d\n",dp[la][lb]);
}
return 0;
}
相关文章推荐
- Number Sequence
- hdu5329(2015多校4)--Question for the Leader
- dojo中的build(或叫压缩)
- STM32学习(1) 将外设封装成Arduino风格的类库
- 隐藏UITableview自定义cell中UITexField的弹出键盘
- SDUT2015暑假集训14级周赛1 C - 曼联(积分+求最大公yue数)
- VK Cup 2015 - Finals F. Clique in the Divisibility Graph
- UI02_UITextField及各类继承关系
- 使用WindowsBuilder进行可视化设计时不能预览界面
- Selenium2学习-024-WebUI自动化实战实例-022-网站不同分辨率下页面样式展示兼容性问题解决方案 -- 设置浏览器显示区域大小(无人值守,节约测试成本的福音,BOSS 最爱)
- UIView UILabel UITextFiled UIButton UIControlView UIAlertView
- c# ConcurrentQueue
- <property name="typeAliasesPackage" value="cn.itcast.core.bean"/>的作用
- Uilabel 字体
- hdu 4027 Can you answer these queries?
- windows 8.1 专业版 visual stuido 2015 安装失败
- UE和UI的概念
- Selenium2学习-023-WebUI自动化实战实例-021-获取浏览器显示区域大小,通过 WebDriver 截图功能
- Unique Binary Search Tree II
- Postgresql: UUID的使用