次のような問題があります。
一連の数値 (S)、初期値 (V)、および目標値 (T) が与えられた場合、一連の + 操作と - 操作がシーケンス S に割り当てられるかどうかを確認します (操作はシーケンスの順序を尊重する必要があります)。 ) V から開始して、T 以上の数に到達します。また、いつでも破ることができない制限 X があります (合計がいつでも間隔 [0, X] を出る場合、その解パスは無効です。問題のすべての数値もこの間隔内にあります)。
また、制限ルールを尊重して、これらの操作から取得できる最大の合計を見つける必要があります (-last- 操作で合計が制限を超えると、ルールが破られる可能性があります)。
私はそれを調べて、ナップザックの問題とパーティションの問題に対する動的プログラミングの解決策について少し調べましたが、解決策はこの行にあると思います。
ただし、制限ルールを処理する方法と、最大の合計を見つける方法がわかりません。制限の問題は、いくつかの状況で発生します: 足し算され、残りの数が引かれることになる数を見つけるためのナップザックの解を見つけようとするとします。ナップザック ソリューションは合計の上限を破る可能性がありますが、操作の順序が原因で実際の合計が破れない可能性があります (制限が実際に破られる前に何かを減算する可能性があり、その後は破られません)。全て)。
これに対する良いアプローチを見つけるのを手伝ってくれる人はいますか? ありがとうございました。