私はあるインタビューでこの質問をされました。質問は次のようになります
'+' と '-' の文字列があります (例: ++----++++++-+--+ )。プレーヤー 1 とプレーヤー 2 の 2 人のプレーヤーがいます。各ターンで、プレーヤーの 1 人が任意の 2 つの連続する「+」、つまり ++ を選択し、それらを -- に裏返すことができます。したがって、最初の文字列が ++----++++++-+--+ の場合、プレーヤーには次の 6 つの選択肢 (2 - 7) があります (最初の選択肢は参照用です)。
- ++----++++++-+--+
- ------++++++-+--+
- ++--------++++-+--+
- ++----+--+++-+--+
- ++----++--++-+--+
- ++----+++--+-+--+
- ++----++++---+--+
プレイヤーは1人ずつ手番を行います。最後の手を打ったプレイヤーが勝ちます (または負けます - 違いはありません)。
最初の文字列が与えられ、プレーヤー 1 が最初のターンを実行した場合、誰が勝つかを知る必要がありますか?
これは、各プレーヤーが最適なプレイを試み、各ステップで彼を勝利の位置に移動させる動きをするという、古典的なゲーム理論の問題のように思えます。
これを解決するためにどのようにアプローチできるかについてのアイデアはありますか?
PS - 解決よりもアプローチに興味があります。http://www.codechef.com/wiki/tutorial-game-theoryを読みましたが、ここで同じロジックを適用できませんでした。