最長公共子串行問題:若給定序列x=,則另一串行z=,是x的子串行是指存在乙個嚴格遞增下標序列使得對於所有j=1,2,…,k有:zj=xij。例如,序列z=是序列x=的子串行,相應的遞增下標序列為。
給定2個序列x和y,當另一串行z既是x的子串行又是y的子串行時,稱z是序列x和y的公共子串行。
給定2個序列x=和y=,找出x和y的最長公共子串行。
void lcslength (char *x ,char *y, int m, int n, int **c, int **b)
else if (c[i-1][j]>=c[i][j-1])
else}}
void lcs(int i ,int j, char *x ,int **b)
else if (b[i][j]== 2)
lcs(i-1,j,x,b);
else lcs(i,j-1,x,b);
}具體**:
#include
#include
#include
#define max 100
void lcslength(char *x,char *y,int m,int n,int **c,int **b)
else if(c[i-1][j]>=c[i][j-1])
else
}
}
void lcs(int i,int j,char *x,int **b)
else if(b[i][j]==2)lcs(i-1,j,x,b);
else lcs(i,j-1,x,b);
printf("\n");
}
void main()
動態規劃之最長公共子串行 最長公共子串
題目 如果字串1的所有字元按其在字串中的順序出現在另外乙個字串2中,則字串1稱之為字串2的子串行。注意,並不要求子子串行 字串1 的字元必須連續出現在字串2中。請編寫乙個函式,輸入兩個字串,求它們的最長公共子串,並列印出最長公共子串行。例如 輸入兩個字串bdcaba和abcbdab,字串bcba和b...
動態規劃之最長公共子串行
最長公共子串行簡介 舉例說明並分析 塊測試結果 乙個給定序列的子串行是在該序列中刪去若干元素後得到的序列,確切的說,若給定序列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對於動...