博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode:Nim Game - 尼姆博弈
阅读量:5751 次
发布时间:2019-06-18

本文共 1657 字,大约阅读时间需要 5 分钟。

hot3.png

1、题目名称

Nim Game(尼姆博弈)

2、题目地址

3、题目内容

英文:

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.

中文:

你在和朋友玩“尼姆博弈”游戏,假设在桌上有一堆石子,二人轮流从这堆石子中拿走1到3块,取走最后一块石子的人获胜。这里假定你是第一个取石子的人。

假设你和你的对手都了解这个游戏的规则,写一个函数判定你是否可以取胜。

例如,如果有4块石头,那么你就是无法取胜的。无论你拿走1、2、3块石头,你的朋友都可以通过将其余的石子全部取走获胜。

4、解题方法1

网上已经有了很多对尼姆博弈问题的介绍,如维基百科页面:

解题Java代码如下:

/** * LeetCode 292 - Nim Game * @FileName Solution.java * @FileAuthor Tsybius * @DateTime 2015年12月20日 下午10:47:54 */public class Solution {        /**     * 计算尼姆博弈当前情况下是否必胜     * @param n     * @return     */    public boolean canWinNim(int n) {        if (n <= 0) {            return false;        } else {            return n % 4 != 0;         }    }}

另一种解法是讨论区大牛给出的方法,采用位运算解决本问题。

/** * LeetCode 292 - Nim Game * @FileName Solution.java * @FileAuthor Tsybius * @DateTime 2015年12月20日 下午10:54:12 */public class Solution {        /**     * 计算尼姆博弈当前情况下是否必胜     * @param n     * @return     */    public boolean canWinNim(int n) {        if (n <= 0) {            return false;        } else {            return n >> 2 << 2 != n;        }    }}

END

转载于:https://my.oschina.net/Tsybius2014/blog/548232

你可能感兴趣的文章
创建美国地区的appleId
查看>>
例题10-2 UVa12169 Disgruntled Judge(拓展欧几里德)
查看>>
JS 原生ajax写法
查看>>
Composer管理PHP依赖关系
查看>>
React.js学习笔记之JSX解读
查看>>
我所了解的Libevent和SEDA架构
查看>>
Socket编程问题小记
查看>>
基于Flask-Angular的项目组网架构与部署
查看>>
一张图道尽程序员的出路
查看>>
redis 常用命令
查看>>
LVS+Keepalived高可用负载均衡集群架构
查看>>
烂泥:kvm安装windows系统蓝屏
查看>>
iPhone开发面试题--葵花宝典
查看>>
EdbMails Convert EDB to PST
查看>>
POJ 2184
查看>>
大话 程序猿 眼里的 接口
查看>>
struts2用了哪几种模式
查看>>
replace函数结合正则表达式实现转化成驼峰与转化成连接字符串的方法
查看>>
ubuntu 初学常用命令
查看>>
WCF客户端与服务端通信简单入门教程
查看>>