Sprague Grundy定理

时间:2013-11-05 21:34:27

标签: game-theory

我一直试图在spoj上解决http://www.spoj.com/problems/MATGAME/这个问题。 使用sprague grundy定理可以解决这个问题。计算每行的sprague Grundy Number,如果这些值的XOR(^)为0,则第二个玩家首先获胜。 我不明白如何获得每行的grundy数字。

1 个答案:

答案 0 :(得分:0)

一般感知
如果第一个数字大于第二个数字,那么该行的Grundy值是第一个数字,否则Grundy是第一个数字 - 。

伪代码看起来像:

ans := 0
for i from 1 to N
    temp := 0
    for j from M down to 1
        if temp is greater or equal to val[i,j]
            temp := val[i,j] - 1
        else
            temp := val[i,j]
        end if
    end for
    ans := ans ^ temp
end for
if ans is equal to 0
    print SECOND
else
    print FIRST