最长公共子串(Longest Common Substring)

来源:互联网 发布:php企业网站模板 编辑:程序博客网 时间:2024/06/10 05:07
#include <iostream>using namespace std;int dp[30][30];int maxlen;    /* 记录最大公共子串长度 */int maxindex;  /* 记录最大公共子串在串1的起始位置 */void LCS(char * X, int xlen, char * Y, int ylen){maxlen = maxindex = 0;for(int i = 0; i < xlen; ++i){for(int j = 0; j < ylen; ++j){if(X[i] == Y[j]){if(i && j){dp[i][j] = dp[i-1][j-1] + 1;}if(i == 0 || j == 0){dp[i][j] = 1;}if(dp[i][j] > maxlen){maxlen = dp[i][j];maxindex = i + 1 - maxlen;}}}}for (int i = 0; i < maxlen; i++){printf("%c", X[maxindex+i]);}printf("\n");}int main(){char X[] = "aaaba";char Y[] = "abaa";LCS(X,strlen(X),Y,strlen(Y));return 0;}

0 0
原创粉丝点击