LeetCode 292:Nim Game(尼姆游戏)

原创 2017年05月26日 15:51:48

You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones. The one who removes the last stone will be the winner. You will take the first turn to remove the stones.

Both of you are very clever and have optimal strategies for the game. Write a function to determine whether you can win the game given the number of stones in the heap.

For example, if there are 4 stones in the heap, then you will never win the game: no matter 1, 2, or 3 stones you remove, the last stone will always be removed by your friend.

思路:

这其实是一个脑筋急转弯题,可以倒着想,因为每个人都不可能一次拿走4个石子,所以如果剩下4个石子,谁先拿谁输。所以如果想自己赢,就需要在倒数第3局的时候,自己拿走石子后保证剩下4个石子,这样小伙伴不管拿1,2或3个石子,都能保证自己拿走最后一个石子。同理,要想自己最终赢得胜利,只需要保证倒数2n+1局的时候,自己拿走石子后保证剩下的石子数为4的倍数。因为自己第一个拿,所以只有石子总数不是4的倍数,这样自己拿走除以4后余数个石子,才能保证剩下的石子数是4的倍数,取得游戏的胜利。综上:若石子数是4的倍数,则输;否则,赢。

Code:

class Solution {
public:
    bool canWinNim(int n) {
        if (n%4!=0) return true;
        else return false;
    }
};


博弈论(一):Nim游戏(尼姆博弈)

重点结论:对于一个Nim游戏的局面(a1,a2,...,an),它是P-position当且仅当a1^a2^...^an=0,其中^表示位异或(xor)运算。 Nim游戏是博弈论中最经典的模型(之...
  • hdd871532887
  • hdd871532887
  • 2014年11月20日 21:18
  • 894

使用Python编写一个聪明的尼姆游戏

关于尼姆游戏的介绍请参考上一篇文章:一个傻傻的尼姆游戏及其Python实现,本文使用Python实现一个聪明的尼姆游戏。 在聪明模式中,计算机每次拿走足够多的物品使得堆的大小是2的幂次方减1——也就...
  • oh5W6HinUg43JvRhhB
  • oh5W6HinUg43JvRhhB
  • 2017年11月11日 00:00
  • 75

leetCode之旅(5)-博弈论中极为经典的尼姆游戏

题目介绍You are playing the following Nim Game with your friend: There is a heap of stones on the table,...
  • u010321471
  • u010321471
  • 2016年03月29日 17:14
  • 1312

尼姆(Nim)游戏

不用博弈论的概念,通俗地讲一下尼姆(Nim)游戏 现有若干堆石子,每堆石子的数量都是有限的,双人进行游戏,每个人在每次行动的时候可以“选择一堆石子并拿走若干颗,不能不拿”,没有石子可拿的人为...
  • fanoluo
  • fanoluo
  • 2014年10月31日 22:55
  • 715

LeetCode从零单排之一分段——Nim Game(尼姆博弈)

原题(你们这里洋文好的人很多啊,我就不瞎翻译了): You are playing the following Nim Game with your friend: There is a h...
  • dt_yee
  • dt_yee
  • 2015年11月24日 12:35
  • 466

一次失败的刷题经历:[LeetCode]292之尼姆游戏(Nim Game)

最近闲来无事刷LeetCode,发现这道题的Accept Rate还是挺高的,尝试着做了一下,结果悲剧了,把过程写下来,希望能长点记性。该题的描述翻译成中文如下: 你正在和你的朋友玩尼姆游戏(Nim...
  • three_bird
  • three_bird
  • 2016年05月10日 10:22
  • 1029

ACM-尼姆博弈之取(m堆)石子游戏——hdu2176

ACM 尼姆博弈 取(m堆)石子游戏 hdu2176 改变奇异态
  • lx417147512
  • lx417147512
  • 2014年05月02日 15:40
  • 1925

Nim游戏,Grundy函数介绍

Nim游戏,Grundy函数介绍部分翻译自:http://www.cut-the-knot.org/ctk/May2001.shtmlNim是一种很古老又很迷人的双人参与的数学游戏。这个游戏的名字和相...
  • mystoryfantacy
  • mystoryfantacy
  • 2016年06月10日 21:01
  • 386

巴氏(bash)威佐夫(Wythoff)尼姆(Nim)博弈之模板

转自:http://colorfulshark.cn/wordpress/巴氏(bash)威佐夫(wythoff)尼姆(nim)博弈之模板-823.html 最近研究了一下博弈论(听起来很高大上),...
  • hurmishine
  • hurmishine
  • 2016年07月21日 18:37
  • 2084

博弈论-尼姆博弈

尼姆博弈(Nimm's Game) 题型 尼姆博弈模型,大致上是这样的: 有3堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取1个,多者不限,最后取光者得胜。   分析 ...
  • u013514928
  • u013514928
  • 2017年04月04日 09:07
  • 306
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode 292:Nim Game(尼姆游戏)
举报原因:
原因补充:

(最多只允许输入30个字)