巴什博奕

版权声明:未经允许禁止转载 https://blog.csdn.net/weixin_38481963/article/details/87950689

巴什博奕:

巴什博弈:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。

如果有m+1个物品,那么无论第一个人如何拿取,第二个人都会全部拿走。
因此如果我们一直让第二个人一直保持m+1的状态,那么一定会赢。

然后我们可以推导出获胜法则:n=(m+1)r+s;(r为任意整数,0<s<=m,);

第一个人第一次要取走s件物品,如果第二个人取走k件物品,那么第一个人就要取走m+1-k件物品,使对手始终面临 (m+1)r 的局面。最终使对手面临 (m+1) 的状态。

解决方案:

public boolean canWin(int n) {  
        return n%(m+1)!=0;
}

猜你喜欢

转载自blog.csdn.net/weixin_38481963/article/details/87950689