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,即整除无余数,则规定只搬一座山,以防止冒进后发生问题。
程序如下:
对于这道题,关键是站到两个游戏者的角度思考,每个人都想赢,但是,如何才能赢呢?又引出了一个定理“巴什博弈”,即,你如果想打败对方,就要构造一种环境,这种环境就是 每次留给对手(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,即整除无余数,则规定只搬一座山,以防止冒进后发生问题。
程序如下:
相关文章推荐
- NYOJ 23 取石子
- NYOJ-23取石子(一)
- NYOJ 题目23 取石子(一),hdu 题目1846 Brave Game 巴什博奕(Bash Game)
- NYOJ 23取石子问题(巴什博弈)
- NYOJ,23,取石子(一)
- Nyoj-23 取石子(一) (博弈游戏)
- NYOJ 23 取石子
- nyoj 23 取石子(一)
- NYOJ:23-取石子(一)
- NYOJ_23_取石子(一)
- NYOJ23 取石子(一)(详解巴什博奕)
- NYOJ-23 取石子(一)
- nyoj 23 取石子(一)
- NYOJ 23 取石子(一)
- NYOJ 23 —— 取石子(一)【博弈】
- NYOJ 23 取石子(一)
- nyoj23取石子(一)
- nyoj-23-取石子(一)
- NYOJ-23 取石子(一)(巴什博奕)
- NYOJ 23 取石子(一) 解题报告