動態規劃之最長公共子串行(C 原始碼)

2021-08-30 21:36:27 字數 814 閱讀 5265

在序列x=與y=中查詢長度最長的公共子串行,往往不是乙個。例如:x=,y=,則公共子串行有z=,z1=,z2=

用c[i][j]記錄序列xi和yi的最長公共子串行的長度。當i=0或者j=0時,xi和yi的最長公共子串行為空,所以c[i][j]=0。

其他情況:當xi=yi時,c[i][j]=c[i-1][j-1]+1。當xi不等於yi時,c[i][j]=max

#includeusing namespace std;

#define num 100

int c[num][num];//存放i,j之間最大公共子串行的長度

int b[num][num];//記錄c[i][j]的值是哪得來的

void lcs(int m,int n,const char x,const char y)

for(i=1;i=c[i][j-1])

}else}}

}

由演算法得到的陣列b可用於快速構造序列x和y的最長公共子串行

void lcs(int i,int j,char x)

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

else

}else

}

主函式:

int main()

cin>>n;

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

cout<<"----------------"

cout

return 0;

}

動態規劃之最長公共子串行

最長公共子串行簡介 舉例說明並分析 塊測試結果 乙個給定序列的子串行是在該序列中刪去若干元素後得到的序列,確切的說,若給定序列x 則另一串行z x的子串行是指存在乙個嚴格的下標序列,使得對於所有的j 0,1,k 1有zj xij。例如序列z 是序列x 的子串行,相應的遞增下標序列維。最長公共子串行問...

動態規劃之最長公共子串行

給出兩個字串,求出這樣的一 個最長的公共子串行的長度 子串行 中的每個字元都能在兩個原串中找到,而且每個字元的先後順序和原串中的 先後順序一致。sample input abcfbc abfcab programming contest abcd mnp sample output 4 2 0對於動...

動態規劃之最長公共子串行

最長公共子串行問題 time limit 1000 ms memory limit 65536 kib submit statistic discuss problem description 給定兩個序列x input 輸入資料有多組,每組有兩行 每行為乙個長度不超過500的字串 輸入全是大寫英文...