3

同じアイテムで異なる注文の 2 つのリストがあります。例えば:

a = [4, 2, 3, 1]
b = [2, 3, 1, 4]

リストを同じにするためにどのアイテムを削除する必要がありますか? ここに:[4]答えがあるので:

a = [2, 3, 1]
b = [2, 3, 1]

しかし、[2, 4]または[2, 3, 1]私が削除した場合の答えでもあります[2, 3, 1]

a = [4]
b = [4]

最小数の要素を削除する必要があり[4]ます。これが最適なソリューションです。

もう一つの例:

a = [1, 2, 3, 4]
b = [2, 1, 4, 3]

考えられる答え:

[1, 3]
[1, 4]
[2, 3]
[2, 4]

アルゴリズムの順序は重要ではありません。

4

1 に答える 1

3

私は確かに最初に最長の共通サブシーケンスを検索します(google LCS、多くのアルゴリズムが利用可能です、たとえばalgorithmist)、元のリストの1つからLCS要素を削除すると、削除する要素の最短リストが得られます。疑似コードで:

lcs = LCS(a,b)
res = copy(a)
foreach element e in lcs
  remove(res,e)
return res
于 2012-09-16T12:46:33.293 に答える