私はHackerRankのDynamic Programmingセクションからthisの問題を解決しようとしていました。私は編集の解説を読んで理解しています。しかし、それはダイナミックプログラミングのアプローチに直接ジャンプします。私はブルートフォースのアプローチがこの問題のために何であるかを知りたい。HackerRankの "Bricks Game"
説明:あなたとあなたの友人が、N個のレンガからなるスタックを使用してゲームをプレイすることを決定しました。このゲームでは、代わりに1,2,3のレンガを上から削除し、削除されたレンガ上でエッチングされた数字があなたのスコアに追加されます。可能な限り最大のスコアを得るためにプレーする必要があります。あなたの友人も最適にプレイし、あなたは最初の動きをします。
私の最初の考えは、1,2,3の長さの可能なすべての組合せの組み合わせを、スタックの上端から下端まで列挙することです。この列挙体をSと呼ぶことにしましょう。次に、S内のすべてのx(あなたの得点)とy(相手の得点)のすべての(x、y)を見つけます。ここでx!= yです。最後に、すべてのペアを繰り返して、最大得点(たとえば、xの最大合計)を計算します。