最長公共子串行問題

2021-06-12 21:40:43 字數 683 閱讀 8673

最長公共子串行問題很早就在很多論壇上見過,前幾天看到乙個人發了一篇帖子,心血來潮就去看演算法導論上的動態規劃部分,關於這個問題不再細述,直接貼c++實現的具體**了。

//做大公共子串行問題

#pragma once

#include using std::string;

#define over 1 //書中使用箭頭符號表示的,這裡用巨集代替

#define left 2

#define leftover 3

class lcs

;

#include "lcs.h"

#include #include using namespace std;

lcs::lcs()

for (int i = 0; i <= m; i++) }

}lcs::~lcs()

delete c;

delete b;

}void lcs::prorun()

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

else

} }}

void lcs::printresult(int i, int j)

if (b[i][j] == leftover)

最長公共子串行問題

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

最長公共子串行問題

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

最長公共子串行問題

最長公共子串行問題是使用動態規劃的典型應用 解決此問題需要定義二維輔助陣列 dp m 1 n 1 其基本公式 最後通過回溯,找到其公共子串行 回溯方法如下 此圖摘自 例項程式如下 include include include includeusing namespace std int max i...