我在一次采访中被问到这个问题。问题是这样的
您有一串 '+' 和 '-' (例如 ++----++++++-+--+ )。有两个玩家玩家 1 和玩家 2。在每一轮,玩家之一可以选择任意两个连续的“+”,即 ++ 并将它们翻转为 -。因此,如果初始字符串是 ++----++++++-+--+ 则玩家有以下 6 个选择 (2 - 7) 。(第一个供参考)。
- ++----++++++-+--+
- ------++++++-+--+
- ++--------++++-+--+
- +----+--+++-+--+
- ++----++--++-+--+
- +----+++--+-+--+
- ++----++++---+--+
玩家一一进行。下最后一步的玩家将获胜(或失败 - 没有区别)。
给定一个初始字符串,如果玩家 1 第一轮,我们必须告诉谁赢了?
现在这似乎是一个经典的博弈论问题,每个玩家都试图以最佳方式进行游戏,并且在每一步都采取将他移动到获胜位置的动作。
关于如何解决这个问题的任何想法?
PS - 对方法比对解决更感兴趣。我已阅读http://www.codechef.com/wiki/tutorial-game-theory但无法在这里应用相同的逻辑。