この次の質問に出くわしました。プレイヤー1が2人のプレイヤーのゲームで勝てる方法の数
2人のプレイヤーがプレイしています。各ターンにおいて、両方のプレイヤーは-xから+ xの範囲内のポイントを受け取る(両方とも含まれる)。プレーヤー1はスコアp1から開始し、プレーヤー2はスコアp2から開始します。彼らが合計kターンをプレイした場合、プレイヤー1がゲームに勝つことができる方法の総数、すなわちkターンの終わりにプレイヤー1がプレイヤー2よりも多くのポイントを持つことを見つける。
プレイヤー1とプレイヤー2の組み合わせポイントの総数を求める必要があること(プレイヤー1のポイントの合計) - (プレイヤー2のセットポイントの合計)> = p2-p1 + 1
私はこの問題にどのように対処するか分かりません。アプローチを提案してください。前もって感謝します。
この権利のためのdp定式化が必要ですか?たとえば、-xから+ xの代わりに、範囲として0から2xを使用することもできますが、最終的な答えは同じでなければなりません。私は確かにどのような状態を考慮する必要があるか分からない。 3次元配列、ラウンドの1次元、プレイヤー1とプレイヤー2のスコアのそれぞれ1つですか? – user2980096
良い仕事 - もちろん、DPの改善があります。あなた自身のものを作ることを気にしないでください。 '@ memoize'デコレータを使用してください(あなたはパッケージを調べることができます)。関数には4つのパラメータがありますが、1つは定数なので、memoizationのための3つのアクティブなキー 'p1、p2、k'があります。 – Prune
あなたのソリューションにはありがとうございます! – user2980096