最近我遇到了一个问题,它给你一个4 * 4的矩阵,只包含0和1和1。 2个玩家正在玩游戏,在每个回合中玩家可以选择任何仅由1个组成的子矩阵并使其成为0.无法移动的玩家输掉。如何应用sprague grundy定理?
例 - 0110 0000 0000 0001
然后玩家1将获胜(将在第一回合中删除一个" 1"在第二回合中,第二回合玩家2将获得一个1&因此p1将获得最后一个。
答案 0 :(得分:0)
你不能在这里应用Sprague-Grundy定理。每当你玩多个游戏时都会使用该定理,例如你在两个棋盘上玩两个游戏。
如果你应用通常的递归定义,你可以简单地决定董事会是赢还是失败状态:董事会处于获胜状态,如果至少有一个移动导致失败状态。如果没有动作导致失去状态,那么董事会处于失败状态。
def is_winning_state(board):
for each rectangle rect of 1s on the board:
if not is_winning_state(board - rect):
return True
return false
您还希望应用动态编程,否则程序将无法在合理的时间内完成。