#include#include#include#define fail 0
#define success 1
//貪心法
int getsubsequence(char p, char t)
}j++;
if (j == n)
}return success;
}//動態規劃法
void longestcommonsubsequence(char r, char q)
for (j = 1; j <= n; j++)
for (i = 1; i <= m; i++)
else
else}}
}//輸出這個二維陣列w
for (i = 0; i <= m; i++)
printf("\n");
}//逆序列印最大公共序列
for (i = m, j = n; i >= 1 && j >= 1;)
else
else}}
free(w);
}int main()
else
//最長公共子串行,x是y的子串行,當且僅當x中的所有字元在y中以相同的順序出現
char r = "abbcadc";
char q = "babbac";
longestcommonsubsequence(r, q);
printf("\n");
}
執行結果:
求最長公共子串行
問題 求兩字串行的最長公共字元子串行。這裡注意子串行和子串的區別,子串行可以是從原字串中取出一部分元素重新拼接而成的字串,但取出的元素之間的前後關係要與原字串一致 而子串則必須是連續的。如 adf 是 abcdef 的子串行,而不是子串。分析與解法 設序列x 和y 的最長公共子串行為z 則 若xm ...
求最長公共子串行
字串行的子串行是指從給定字串行中隨意地 不一定連續 去掉若干個字元 可能乙個也不去掉 後所形成的字串行。令給定的字串行 x x0,x1,xm 1 序列 y y0,y1,yk 1 是 x 的子串行,存在 x的乙個嚴格遞增下標序列 i1,ik 1 使得對所有的 j 0,1,k 1 有 xij yj 例如...
求最長公共子串行和最長公共子串
輸入描述 輸入為兩行字串 可能包含空格 長度均小於等於50。輸出描述 輸出為乙個整數,表示最長公共連續子串的長度。輸入例子 abcde abgde 輸出例子 2題解 例如 str1 abcde str2 abgde matrix 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0...