最長公共子串行問題

2021-07-05 20:08:11 字數 1032 閱讀 7006

/**********************************/

/* 最長公共子串行 */

/*求a、b兩字串行的最長公共子串行*/

/**********************************/

#include#define n 50 //最大a字串行長度

#define m 50 //最大b字串行長度

using namespace std;

int main()

/*建立字串行*/

void create_xulie(char t, int t)

/*輸出字串行*/

void show_xulie(char t, int t)

/*求最長公共子串行演算法*/

/*返回:最長公共子串行及其長度*/

int lcs(char a, char b, char c,int l[m+1],int s[m+1], int n, int m)

for (j = 0; j <= m; j++)

/*計算長度及狀態字*/

for (i = 1; i <= n; i++)

else if (l[i - 1][j] >= l[i][j - 1])

else

} }i = n, j = m, k = l[i][j]; //最長公共子串行長度

/*搜尋最長公共子串行字元*/

while ((i != 0) && (j != 0))

} return l[n][m];

}/*列印l、s*/

void show(int l[m + 1], int s[m + 1], int n, int m)

cout << endl;

} cout<<"\n子串行狀態:\n";

for (int i = 0; i <= n; i++)

cout << endl;

} cout << endl << endl;

}

最長公共子串行問題

給定整數a1,a2,an 可能有負值 求連續子串行和的最大值。為方便起見,如果所有整數都為負值,則最大子串行和為0 這是個顯而易見的方法,幾乎每個人在第一眼看到該問題都能夠想出來的方法。就是將所有的子串行找出來,然後求和最大的乙個。如果序列足夠大,該方法的效率可想而知。如下 include incl...

最長公共子串行問題

最長公共子串行問題很早就在很多論壇上見過,前幾天看到乙個人發了一篇帖子,心血來潮就去看演算法導論上的動態規劃部分,關於這個問題不再細述,直接貼c 實現的具體 了。做大公共子串行問題 pragma once include using std string define over 1 書中使用箭頭符號...

最長公共子串行問題

問題描述 字串行的子串行是指從給定字串行中隨意地 不一定連續 去掉若干個字元 可能乙個也不去掉 後所形成的字串行。令給定的字串行x x0,x1,xm 1 序列y y0,y1,yk 1 是x的子串行,存在x的乙個嚴格遞增下標序列,使得對所有的j 0,1,k 1,有xij yj。例如,x abcbdab...