我正在解决 Yandex 问题并遇到了这个问题:
带答案恢复的 NOP 平均值给定两个序列,需要找到并输出它们的最大公共子序列。
让我们提醒您:
如果 x x 是通过从 𝑦 y 中删除几个(可能是零个或全部)元素得到的,则序列 x x 称为序列 y y 的子序列。
最长公共子序列是两个序列的子序列中的最长序列。
输入格式 输入数据的第一行包含数字 N – 第一个序列的长度(1 ≤ N ≤ ≤ 1000)。第二行包含第一个序列的成员(以空格分隔)——绝对值不超过 10,000 的整数。
第三行包含数字 M – 第二个序列的长度(1 ≤ ≤ M ≤ ≤ 1000)。第四行指定第二个序列的成员(以空格分隔)——绝对值不超过 10,000 的整数。
输出格式 要求输出给定序列的最大公共子序列,各个序列之间用空格分隔。如果有多个这样的子序列,那么输出其中任何一个都可以。
注意:在示例2中,有三个最大公共子序列。
1
2
3
其中任何一个都是正确答案。
首先我写了一个常规解决方案,它从第一个序列中取出所有子序列(从最长的开始),并将它们与第二个序列中相同长度的子序列进行比较。前几次测试都成功了,但后来我阅读了条件并意识到困难在于可以从序列中任意删除元素。
也就是说,如果给出两个序列:
1 2 3 4 5
1 7 4 3 5
那么答案就是1 4 5
我不知道如何解决这个问题。