博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU-1159 Common Subsequence(动态规划2)
阅读量:6155 次
发布时间:2019-06-21

本文共 2322 字,大约阅读时间需要 7 分钟。

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         abfcabprogramming    contest abcd           mnp

Sample Output

420 x的一个子序列相应于下标序列{1,2,3.....m}的一个子序列,故X共有2^m个子序列,直接爆,需要指数时间。为此,考虑能否用动态规划方法求解。 先找出它是否满足最优子结构性质: 设序列X={x1,...xm}和y={y2,....yn},子序列为z={z1,...zk} (1)如果 xm=yn,则zk=xn=yn;且z(k-1)是x(m-1)和y(n-1)的最长公共子序列。    找出x(m-1)和y(n-1)的最长公共子序列,然后在其尾部加上xm(=yn)即可得x和y的一个最长公共    子序列 (2)如果xm!=yn,且zk!=xm 则z 是x(m-1)和y的最长公共子序列。      如果xm!=yn,且zk!=yn 则z 是x  和y(n-1的最长公共子序列。     找出x(m-1)和y的一个最长公共子序列及x和y(n-1)的最长公共子序列。这两个公共子序列中较长者即为X和Y的一个最长公共子序列。    如 1 2 3 4 7       1 2 4 5       或 1 2 3 4 9       1 2 3 4
#include 
#include
#include
using namespace std;int main(){ char a[1001],b[1001]; int n,m,i,j,c[1001][1001]; while(scanf("%s%s",&a,&b)!=EOF) { n=strlen(a); m=strlen(b); if(n==0||b==0) { printf("0\n"); break; } memset(c,0,sizeof(c)); for(i=1; i<=n; i++) { for(j=1; j<=m; j++) { if(a[i-1]==b[j-1]) { c[i][j]=c[i-1][j-1]+1; } else { c[i][j]=max(c[i-1][j],c[i][j-1]); } } } printf("%d\n",c[n][m]); } return 0;}

 

转载于:https://www.cnblogs.com/tianmin123/p/4647744.html

你可能感兴趣的文章
Silverlight 如何手动打包xap
查看>>
建筑电气暖通给排水协作流程
查看>>
JavaScript面向对象编程深入分析(2)
查看>>
linux 编码转换
查看>>
POJ-2287 Tian Ji -- The Horse Racing 贪心规则在动态规划中的应用 Or 纯贪心
查看>>
Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月7日-1月14日)
查看>>
关于C#导出 文本文件
查看>>
maclean liu的oracle学习经历--长篇连载
查看>>
分享:动态库的链接和链接选项-L,-rpath-link,-rpath
查看>>
Javascript一些小细节
查看>>
禁用ViewState
查看>>
Android图片压缩(质量压缩和尺寸压缩)
查看>>
nilfs (a continuent snapshot file system) used with PostgreSQL
查看>>
【SICP练习】150 练习4.6
查看>>
HTTP缓存应用
查看>>
KubeEdge向左,K3S向右
查看>>
DTCC2013:基于网络监听数据库安全审计
查看>>
CCNA考试要点大搜集(二)
查看>>
ajax查询数据库时数据无法更新的问题
查看>>
Kickstart 无人职守安装,终于搞定了。
查看>>