最长公共子序列(Long-Common-Subsequence)算法 v1.0 (证明未贴上)
来源:互联网 发布:mac怎么升级到10.12 编辑:程序博客网 时间:2024/06/06 09:31
读书笔记:算法导论 最长公共子序列
子序列(Common-Subsequence)概念:
设X={x0,x1,x2,x3,....xn}, Z={z0,z1,z2,..zk}。存在严格递增下标序列{i0,i1,i2...ik},使得对所有的j=1,2,……,k,有xij=zj。 例如 Z={B,C,D,B} 是 X = {A,B,C,D,A,B}的子序列。
最长子序列即Z即是X的子序列,又是Y的子序列,不存在Z1 使得Z1的长度大于Z,则称Z是X 和Y的最长公共子序列。
最长公共子序列所包含的性质:
设X={x0,x1,x2...xm} Y={y1,y2,y3....yn} Z = {z0,z1,z2...zk} Z是 XY任意的LCS
1、若xm=yn 那么Zk=Xm=Yn 且 Zk-1 是 Xm-1 和 Yn-1的一个LCS
2、若xm!=yn 那么Zk!=Xm 蕴含 Z是Xm-1 和 Y的一个LCS
3、若xm!=yn 那么Zk!=Yn 蕴含Z是X 和Yn-1的一个LCS
贴个demo
#include <iostream>#include <string.h>using namespace std;#define MAXLEN 1000int point[MAXLEN][MAXLEN];int LCS(char *a,char *b,int alen,int blen) { int i,j; memset(point,0,sizeof(point)); for(i=0;i<alen;i++){ for (j=0; j<blen; j++) { if(a[i] == b[j]) { point[i+1][j+1] = point[i][j]+1; } else { if( point[i][j+1] > point[i+1][j] ) { point[i+1][j+1] = point[i][j+1]; } else { point[i+1][j+1] = point[i+1][j]; } } } } return point[alen][blen];}int main(int argc, const char * argv[]){ // insert code here... char *c = "bccwd"; char *d = "ccdvd"; int lcs = LCS(c,d,strlen(c),strlen(d)); printf("lcs:%d\n",lcs); return 0;}
- 最长公共子序列(Long-Common-Subsequence)算法 v1.0 (证明未贴上)
- Common Subsequence(最长公共子序列)
- lintcode longest-common-subsequence 最长公共子序列 证明
- hdu 1159 Common Subsequence ***poj1458(最长公共子序列)
- 最长公共子序列(Longest Common Subsequence LCS)
- 1159Common Subsequence(最长公共子序列)
- UVa10405 - Longest Common Subsequence ( 最长公共子序列 )
- uva 10405 - Longest Common Subsequence(最长公共子序列)
- 最长公共子序列(Longest-Common-Subsequence,LCS)
- UVA 10405 LONGEST COMMON SUBSEQUENCE(最长公共子序列)
- HDU 1159:Common Subsequence(最长公共子序列)
- uva10405 - Longest Common Subsequence(LCS,最长公共子序列)
- HD1159 Common Subsequence 最长公共子序列(LCS)
- hdu 1159 Common Subsequence(最长公共子序列)
- HDU_1159 Common Subsequence(最长公共子序列)
- UVA 10405 Longest Common Subsequence(最长公共子序列)
- POJ 1458 Common Subsequence(最长公共子序列问题)
- HDU 1159 Common Subsequence(最长公共子序列)
- php实现冒泡排序
- Eclipse导入Android项目的正确方法及出错后的解决办法
- android开发小技巧2(Dx 1 error; aborting)
- 看操作系统神马的都弱爆了
- Yii框架的阅读,数据库的优化项
- 最长公共子序列(Long-Common-Subsequence)算法 v1.0 (证明未贴上)
- Ubuntu11设置VGA分辨率
- Python的学习(十五)---- 调用windows下DLL详解
- Linux设备驱动之mmap设备操作
- Lock和Condition实现线程同步通信
- HOJ 1439 The Circumference of the Circle
- 网站被soso收录了
- 日本式样书写法
- 内部动态写入JS