举例
求序列A=xyzyxzxz 与序列B=xzyxxyzx的最长子序列
1.填表
如何填表
y | z | z与z相同,根据xy的值+1(斜上方的数) |
||||||
---|---|---|---|---|---|---|---|---|
x | 1 | 1 | ||||||
z | 1 | 2 |
z | y | x与y不相同,取上边、左边的最大的数据 |
||||||
---|---|---|---|---|---|---|---|---|
x | 2 | 3 | ||||||
x | 2 | 3 |
最终结果:
∅ | x | y | z | y | x | z | x | z | |
---|---|---|---|---|---|---|---|---|---|
∅ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
x | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
z | 0 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 |
y | 0 | 1 | 2 | 2 | 3 | 3 | 3 | 3 | 3 |
x | 0 | 1 | 2 | 2 | 3 | 4 | 4 | 4 | 4 |
x | 0 | 1 | 2 | 2 | 3 | 4 | 4 | 5 | 5 |
y | 0 | 1 | 2 | 2 | 3 | 4 | 4 | 5 | 5 |
z | 0 | 1 | 2 | 3 | 3 | 4 | 5 | 5 | 6 |
x | 0 | 1 | 2 | 3 | 3 | 4 | 5 | 6 | 6 |
2.从最后一个开始,追溯来源:
如果两个元素是相同的,来源就是斜上方的数+1,所以来源就是斜上方。
如果两个元素不同,那么来源就是上方、左方的最大值。
∅ | x | y | z | y | x | z | x | z | |
---|---|---|---|---|---|---|---|---|---|
∅ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
x | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
z | 0 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 |
y | 0 | 1 | 2 | 2 | 3 | 3 | 3 | 3 | 3 |
x | 0 | 1 | 2 | 2 | 3 | 4 | 4 | 4 | 4 |
x | 0 | 1 | 2 | 2 | 3 | 4 | 4 | 5 | 5 |
y | 0 | 1 | 2 | 2 | 3 | 4 | 4 | 5 | 5 |
z | 0 | 1 | 2 | 3 | 3 | 4 | 5 | 5 | 6 |
x | 0 | 1 | 2 | 3 | 3 | 4 | 5 | 6 | 6 |
在来源路径上(绿色)两个相同元素为子序列,得出最长子序列:xzyxxz