POJ1683_Common Subsequence_DP
来源:互联网 发布:编程用什么配置的电脑 编辑:程序博客网 时间:2024/06/06 03:29
题目描述
Common Subsequence
Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64uDescription
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 abfcabprogramming contest abcd mnp
Sample Output
420
解题报告
最长公共子序列
当前配对不成功,取没有当前字符的最长组:
a[i][j]=max(a[i-1][j],a[i][j-1])
成功
a[i][j]=a[i-1][j-1]+1;
01滚动一下就可
代码
#include <iostream>#include <cstring>#include <stdio.h>#include <algorithm>#include <string.h>#include <math.h>char s1[1000],s2[1000];int lsc[2][1000],lenth1,lenth2;#define max(a,b) (a>b?a:b);using namespace std;int main(){ while(scanf("%s%s",s1,s2)!=EOF) { bool zo=false; int pre,now; memset(lsc,0,sizeof(lsc)); lenth1=strlen(s1); lenth2=strlen(s2);// for(int i=0;i<lenth1;i++){ {pre=zo;zo=not zo;now=zo;} for(int j=0;j<lenth2;j++){ if(s1[i]==s2[j]) lsc[now][j]=(j!=0?lsc[pre][j-1]+1:1); else lsc[now][j]=max(lsc[pre][j],(j!=0?lsc[now][j-1]:0)); } } int maximum=-1; for(int i=0;i<=lenth2;i++) {maximum=(maximum>lsc[now][i]?maximum:lsc[now][i]);} printf("%d\n",maximum); } return 0;}
0 0
- POJ1683_Common Subsequence_DP
- 排序算法之二-选择排序和插入排序
- 佛學與編程 (楞嚴經)
- POJ1157_LITTLE SHOP OF FLOWERS_DP
- 利用word2vec对关键词进行聚类
- Linux下USB转串口驱动
- POJ1683_Common Subsequence_DP
- STM32和Linux(转载)
- android 的 setTag
- Android Fragment详解(四):管理Fragment
- onCreate中的savedInstanceState有何具体作用
- js基本语法
- POJ1159_Palindrome_DP
- socket 获取本机地址
- Back-Propagation Neural Networks