Longest Common Subsequence (LCS)最长公共子串
来源:互联网 发布:福州网络棋牌公司 编辑:程序博客网 时间:2024/05/22 23:15
Longest CommonSubsequence (LCS). The following are some instances.
a) X: xzyzzyx Y: zxyyzxz
b) X:MAEEEVAKLEKHLMLLRQEYVKLQKKLAETEKRCALLAAQANKESSSESFISRLLAIVAD
Y:MAEEEVAKLEKHLMLLRQEYVKLQKKLAETEKRCTLLAAQANKENSNESFISRLLAIVAG
求最长公共子串(Longest Common Subsequence, LCS)是一道非常经典的动态规划题。
在开始想这道题之前应先理解什么是LCS(最长公共子串)。如串“abcbbc”,"abccbb",其中的一个字串"abc"是其公共子串,但不时最长公共字串。最长公共子串的定义中,并不要求最长公共子串必须连续出现在两个字符串中,只需要能保持顺序的出现在序列中即可。
#include<stdio.h>#include<stdlib.h>char X[]="MAEEEVAKLEKHLMLLRQEYVKLQKKLAETEKRCALLAAQANKESSSESFISRLLAIVAD";char Y[]="MAEEEVAKLEKHLMLLRQEYVKLQKKLAETEKRCTLLAAQANKENSNESFISRLLAIVAG";int xlength = 60;int ylength = 60;//char X[100];//char Y[100]//int xlength,ylength;int c[100][100];char b[100][100]; int LCS_LENGTH(){int m = xlength,n = ylength;for (int i = 1;i<=m;++i){c[i][0]=0;}for (int j = 0;j<=n;++j){c[0][j]=0;}for(int i = 1;i<=m;++i){for(int j = 1;j<= n;++j){if(X[i]==Y[j]){c[i][j]=c[i-1][j-1]+1;b[i][j]='/';}else if(c[i-1][j]>=c[i][j-1]){c[i][j] = c[i-1][j];b[i][j] ='U';}else {c[i][j] = c[i][j-1];b[i][j] ='L';}}}return 0;}int printLCS(int i,int j){if(i==0||j==0){return 0;}if(b[i][j]=='/'){printLCS(i-1,j-1);printf("%c",X[i]);}else if(b[i][j]=='U'){printLCS(i-1,j);}else printLCS(i,j-1); return 0;}int main(){ /*此处是我自己设计的,有助于程序的重复利用,不仅仅是可以测试练习上的几个例子,还可以手动输入,这样才是编程的目的所在。printf("please input the num of X sequence and Y sequence :\n");scanf("%d%d",&xlength,&ylength);printf("please input X sequence :\n");fflush(stdin);for(int i = 1;i<=xlength;++i){scanf("%c",&X[i]);}printf("please input Y sequence :\n");fflush(stdin);for(int i = 1;i<=ylength;++i){scanf("%c",&Y[i]);}*/LCS_LENGTH();for(int i = 1;i<= xlength;++i){for(int j = 1;j<= ylength;++j){printf("%d%c ",c[i][j],b[i][j]);}printf("\n");}printLCS(xlength,ylength); system("pause"); return 0;}
0 0
- LCS (Longest Common Subsequence) 字符串最长公共子串算法
- Longest Common Subsequence (LCS)最长公共子串
- 最长公共子序列与最长公共子串(Longest Common Subsequence, LCS)
- 最长公共子序列(Longest Common Subsequence LCS)
- uva 10405 Longest Common Subsequence 最长公共子序列 LCS
- 最长公共子序列(LCS, Longest Common Subsequence), POJ 1458
- 求最长公共子序列Longest Common Subsequence LCS
- 最长公共子序列(Longest-Common-Subsequence,LCS)
- 最长公共子序列问题LCS Longest Common Subsequence
- uva10405 - Longest Common Subsequence(LCS,最长公共子序列)
- 最长公共子序列(Longest Common Subsequence, LCS)
- 最长公共子序列(Longest Common Subsequence,LCS)
- 最长公共子序列,Longest-Common-Subsequence(LCS)
- 最长公共子序列LCS(The longest common subsequence)
- 最长公共子序列问题(LCS) Longest common subsequence
- 最长公共子序列问题(Longest common subsequence,LCS)
- LCS(Longest Common Subsequence 最长公共子序列)
- 最长公共子序列问题(LCS, Longest Common Subsequence)
- MTStarEvaluation五星评价条,可以在商品评价栏中应用。
- MongoDB简介
- char str[] 和 char *str 的区别(p66程序员面试宝典)
- Mac 改变 Launchpad 图标大小
- 关于ARM下载程序的几种方式
- Longest Common Subsequence (LCS)最长公共子串
- UIButton详解
- JSF 的xtml 声明格式例
- linux之akw
- mac的终端下面使用ssh user@localhost输入密码 不能正常登录
- sprinvMVC 中重定向、转发、重定向到Control
- 去除tableview上的空白间隔
- tightvnc linux编译
- C/C++ 通用 Makefile