您的位置:首页 > 其它

NYOJ 23题 取石子(一)

2013-08-05 23:43 302 查看
刚一看到这道题时,让我想起了“搬山游戏”,但是,拿过那道题一对照,规则明显不同。

对于这道题,关键是站到两个游戏者的角度思考,每个人都想赢,但是,如何才能赢呢?又引出了一个定理“巴什博弈”,即,你如果想打败对方,就要构造一种环境,这种环境就是 每次留给对手(m + 1)的倍数个石子,即(n % (m + 1) != 0),假设,一共20个,每次最多取8个,TT先取,取2个,余下18个,无论对手怎么取,TT总是先取完。(公式:n = (m + 1)r +
s, r为任意自然数。)当然,如果,总数N小于M,TT很聪明,为了赢,会取走所有的石子。

“搬山游戏”的规则是,谁最后搬完,谁输。计算机为了赢,所以,1.当剩余山数目-1 <= 可移动的最大数目时,计算机 要搬(剩余山数 - 1)座,以便将最后一座山留给人;2.对于任意x,y,一定有 0 <= x % (y + 1) <= y.在有n座山的情况下,计算机为了将最后一座山留给人,而且又要控制每次搬山的数目不超过最大数k,计算机应搬山数满足:(n - 1)% (k
+ 1),如果结果为0,即整除无余数,则规定只搬一座山,以防止冒进后发生问题。

程序如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: