2-1:ゲーム木改題 解説


この問題は状態の遷移を書き出していけば解くことができますが、nが大きい場合は大変な作業になります。そこで、n個の石のゲームはn-1, n-2, n-3個の石のゲームから効率的に求めることができる性質を利用します。

実際にある程度のゲーム木を書いてみると、重複している部分木があることがわかります。これらをよく見ると、n個の石から派生する木の形は例外なく一致していることがわかります。

この性質より、n個の石のゲームはn-1, n-2, n-3個の石のゲームの結果を合算したものであるとわかります。具体的には、0, 1, 2個の石のゲームの勝ちパターンをあらかじめ求めておき、3以降を計算していくということです。

実際に式を立てると、\(A_i\) を人間の勝ちパターン、\(B_i\) をコンピュータの勝ちパターン(iは最初の石の数)とすると、

\(A_i = B_{i-1} + B_{i-2} + B_{i-3}\), \(B_i = A_{i-1} + A_{i-2} + A_{i-3}\)となります。

ここで、石が1個変わるとターンが変わり、勝ちと負けのパターンが入れ替わることに注意してください。

実装例