正の整数 A が与えられます。目標は、次の規則を使用して、A で終わる整数の可能な限り短いシーケンスを構築することです。
- シーケンスの最初の要素は 1 です
- 連続する各要素は、先行する任意の 2 つの要素の合計です (それ自体に 1 つの要素を追加することもできます)。
- 各要素は、先行するすべての要素よりも大きくなります。つまり、シーケンスは増加しています。
たとえば、A = 42 の場合、考えられる解決策は次のとおりです。
[1, 2, 3, 6, 12, 24, 30, 42]
A = 42 の別の可能な解決策は次のとおりです。
[1, 2, 4, 5, 8, 16, 21, 42]
問題文を読んで真っ先に頭に浮かんだのは動的計画法(DP) だったので、探索問題として表現し、再帰的な解法を書いてみました。
A = 8 までの探索空間は次のとおりです。
1
|
2
/ \
/ \
3 4
/|\ /|\
/ | \ 5 6 8
/ | \
4 5 6
/| |\
5 6 7 8
4 が 2 つの場所で発生することがわかりますが、どちらの場合も 4 の子は異なります。あるケースでは、前のシーケンスは [1, 2, 4] です。それ以外の場合、前のシーケンスは [1, 2, 3, 4] です。したがって、サブ問題が重複しているとは言えません。上記の問題にDPを適用する方法はありますか? それともDPで解けると判断するのが間違っているのでしょうか?