题解 | #最长公共子序列(二)#
最长公共子序列(二)
http://www.nowcoder.com/practice/6d29638c85bb4ffd80c020fe244baf11
最长公共子序列问题 + 输出序列
如何输出序列?
根据状态数组从后往前反推序列中的每个字母
- 如果 ( 这个状态是从 传递而来),则 ,所以当前字母一定在子序列中,把 加入到答案中且下标 i -- , j -- 继续往前寻找。
- 如果 ( 这个状态是从 传递而来),说明 ,下标 i -- 继续往前寻找。
- 否则 ( 这个状态是从 传递而来),说明 ,下标 j -- 继续往前寻找。(经测试这里 = 的情况放在情况 2 中也同样正确,看到其他人的代码都放在了这里)
最后将答案字符串翻转