1

私はビット操作でこの問題を試していましたが、これが原因でした:

数の美しさは、その数に設定されたビットの数です。AさんとBさんが盤面に数字Nが書かれたゲームを始め、手番のプレイヤーが盤面に行き、k<=NでKの美しさが1である新しい数字NKを書きます。これも重要です。 NK の美しさは、N の美しさと等しくなければなりません。最後に自分の動きを成功させたプレイヤーがゲームに勝ちます。

どちらも最適にゲームをプレイします。

PS私はここでコードを探していません.これにアプローチする方法を知りたいですか?

4

1 に答える 1

1

典型的なゲーム理論の問題です。プレイヤーが最適にプレイするということは、どのプレイヤーも勝利の可能性を最大化するような動きをすることを意味します (プレイヤー 2 がチャンスを得たとき、彼も同じことを喜んで行うことを考慮してください)。

この場合、許可されている移動を見てみましょう。

必要に応じて、数の美しさはそのままで、美しさをk持たなければなりません。1 つまり、1 ビット セットのみです (例00000100) 。

さらに説明するために、8ビットの数値しかないと仮定しましょう。

よく見ると、 の美しNさが変わらないために、ビットがセットされているkのは、インデックス (の 1 つ) であり、左に隣接しています。例を挙げます:N01

Nとしましょう01010001。今、k は00100000,00001000です。あなたが見ればN-k美しさは変わらない。1操作後、が右に移動し、したがって左に移動することに気付くでしょう0。たとえば、いつN=01010001k=00100000 (N-k) = 00110001.

また、ゲームの終了位置は、すべて0'sが左になり、すべて1'sが右になります( 00000111)。与えられた数値から可能な移動回数を数えることができますN。奇数の場合は開始したプレーヤーが勝ち、そうでない場合は負けます。

そのような動きの数を数えるのは簡単な数え上げ問題です。

于 2013-10-02T08:07:38.767 に答える