1 题目描述

2 解题思路

这其实是一个脑筋急转弯一样的题目。先给出结论吧:如果堆中石头的数量 n 不能被 4 整除,那么你总是可以赢得 Nim 游戏的胜利。

下面是推导部分:

让我们考虑一些小例子。显而易见的是,如果石头堆中只有一块、两块、或是三块石头,那么在你的回合,你就可以把全部石子拿走,从而在游戏中取胜。

而如果就像题目描述那样,堆中恰好有四块石头,你就会失败。因为在这种情况下不管你取走多少石头,总会为你的对手留下几块(数量小于4,可以一趟拿走),使得他可以在游戏中打败你。

因此,要想获胜,在你的回合中,必须避免石头堆中的石子数为 4 的情况。

同样地,如果有五块、六块、或是七块石头,你可以控制自己拿取的石头数,总是恰好给你的对手留下四块石头,使他输掉这场比赛。

但是如果石头堆里有八块石头,你就不可避免地会输掉,因为不管你从一堆石头中挑出一块、两块还是三块,你的对手都可以选择三块、两块或一块,以确保在再一次轮到你的时候,你会面对四块石头。

class Solution:def canWinNim(self, n: int) -> bool:return(not n%4==0)

文巾解题 292. Nim 游戏相关推荐

  1. 文巾解题 45. 跳跃游戏 II

    1 题目描述 2 解题思路 2.1 记录每个点可达的步数 使用一个reach数组,reach[i]记录到达坐标i的时候,需要几跳. 对于每个点i,更新它向后nums[i]个点的reach值 一旦更新过 ...

  2. 文巾解题 面试题 01.04. 回文排列

    1 题目描述 2 解题思路 2.1 哈希表 创建一个哈希表,记录每个元素出现的次数.如果出现次数为奇数的元素只有一个或者没有,那么就是一个回文排列 class Solution:def canPerm ...

  3. 文巾解题 15. 三数之和

    1 题目描述 2 解题思路 2.1 使用两数之和函数 这种做法目前超时了,如果大家有想到合适的减时间/剪枝的方法,欢迎私信or评论~ 两数之和的方法见文巾解题 1. 两数之和_刘文巾的博客-CSDN博 ...

  4. 文巾解题 342. 4的幂

    1 题目描述 2 解题思路 2.1 方法1 判断log函数的结果是不是整数 class Solution:def isPowerOfFour(self, n: int) -> bool:if(n ...

  5. 文巾解题 477. 汉明距离总和

    1 题目描述 2 解题思路 2.1 暴力两两比较 两个数字之间的汉明距离可以使用 文巾解题 461. 汉明距离_刘文巾的博客-CSDN博客 中的任何一种方法,但是因为这个是两两比较,时间复杂度比较高, ...

  6. 文巾解题 1035. 不相交的线

    1 题目描述 2 解题思路 k条互不相交的直线分别连接了数组 nums1和nums2的 k 对相等的元素,而且这 k 对相等的元素在两个数组中的相对顺序是一致的,因此,这 k 对相等的元素组成的序列即 ...

  7. Java实现 LeetCode 292 Nim游戏

    292. Nim 游戏 你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头. 拿掉最后一块石头的人就是获胜者.你作为先手. 你们是聪明人,每一步都是最优解 ...

  8. 文巾解题 810. 黑板异或游戏

    1 题目描述 2 解题思路 ·根据游戏规则,轮到某个玩家时,如果当前黑板上所有数字异或结果等于 0,则当前玩家获胜.由于 Alice 是先手,因此如果初始时黑板上所有数字异或结果等于 0,则Alice ...

  9. 文巾解题 278. 第一个错误的版本

    1 题目描述 2 解题思路 二分查找见:二分查找详解_刘文巾的博客-CSDN博客 class Solution(object):def firstBadVersion(self, n):left=1r ...

最新文章

  1. 39条常见的Linux系统简单面试题
  2. WCF服务的REST / SOAP端点
  3. mysql 怎么导入函数_mysql导入导出包括函数或者存储过程_MySQL
  4. 2010年度报告:是谁在编写Linux内核?
  5. 中兴高达和中兴啥关系_41家通信传输设备公司研发投入排名:中兴通讯、烽火通信最敢投...
  6. vue中使用v-on绑定事件中,获取$event.currentTarget,日志打印为null
  7. Spring MVC 3模板和Apache Tiles
  8. oracle 日志 LogMiner
  9. 基于pyQt的按键响应程序,实现按下按键进行图片曝光(按下按钮,运行另一个曝光图片程序.py)
  10. VSFLEXgrid控件几个特殊的属性方法的使用
  11. 双十一大战收官:荣耀反超苹果,以新思维新模式傲视群雄
  12. Java中的对象都是在堆上分配的吗?
  13. ROS-Navigation之map_server笔记及程序解析
  14. python csv写文件,用Excel打开中文乱码解决
  15. PIP安装wxpy报错
  16. 像《我是歌手》一样说我是程序员
  17. Mybatis-Plus的使用小技巧,高级面试题+解析
  18. 张勋说:钢渣处理工艺流程图及解析
  19. # 经典目标检测识别方法概述RCNN/FAST/FASTER RCNN/MASK RCNN/SSD/DSSD/YOLO V1/YOLO V2等
  20. ScreenToGif,让你一用就爱上的电脑端GIF动图制作软件

热门文章

  1. Linux关机命令总结
  2. 内存的静态分配和动态分配的区别【转】 静态分配内存与动态分配内存的区别
  3. 算法提高课-搜索-最短路模型-AcWing 188. 武士风度的牛 :bfs、dist数组记录最小步数
  4. CSP认证201312-5 I’m stuck![C++题解]:dfs、两次dfs
  5. PAT甲级1045 Favorite Color Stripe (30 分):[C++题解]最佳彩色带、DP、公共子序列变形
  6. SpringBoot报错Unsatisfied dependency expressed through field userMapper和Whitelabel Error Page解决方案
  7. Linux信号 一 信号可靠性与分类
  8. channels java_Java NIO channels
  9. python安装不了bs4_怎么在python安装bs4
  10. as3 访问远程计算机,Flash AS3中数据发送与接收