游戏规则: 
N块石头,两个玩家 A,B,A负责将石头分成M堆,然后按BABA顺序来抓取,
每人每次可以从任意堆抓取大于1的任意块石头,取得最后一块石头的人赢。
书中的分析:
如果每堆石头只有一块,当M是奇数的时候,一定是先抓的赢。
如果有两块石头,分成两堆  1:1,那先抓的一定输。
扩展一下,如果有偶数块石头,平均分成两堆 X:X,那先抓的一定会输。
联想到XOR 运算
0  xor 0   = 0
0  xor 1   = 1
1  xor 1   = 0
X xor X   = 0
当 0  xor  0 结果为 0 时,游戏已经结束了。
把两堆扩展到M堆,道理也是同样。
M1, M2, M3, ... Mn
如果N是奇数,
第一步, M1 xor M2 xor M3 ...... xor Mn  != 0:  因为奇数可以分解为奇数个奇数或奇数和偶数,在运行xor时最后一位一定会是1,它不会为 0
第二步, M1` xor M2` xor M3` ......  xor Mn`  = 0:  经过第一次抓取后,第二个人总是可以把第一次抓取的结果转换为  xor = 0
相当于转换为偶数的状态,
第三步, M1 xor M2 xor M3 ...... xor Mn  != 0: 第三步的值又会被转换为不等于0
一,二,三步循环相当于抓取次序的循环,那先抓的一定会赢。
示例程序:
示例程序为一个人和电脑轮流抓取的一个游戏,人的输入为两个整数用空格分隔,第一个整数表示堆号,第二个整数表示抓取的块数。
测试数据可以自己构造任意堆的石头。电脑会保证自己赢。
示例工程及代码

编程之美 - 抓石头游戏(2)相关推荐

  1. 2014编程之美热身赛 - 传话游戏

    描述 Alice和Bob还有其他几位好朋友在一起玩传话游戏.这个游戏是这样进行的:首先,所有游戏者按顺序站成一排,Alice站第一位,Bob站最后一位.然后,Alice想一句话悄悄告诉第二位游戏者,第 ...

  2. 编程之美-24点游戏方法整理

    [试题描述] 方法一: 方法二:部分伪代码 part 1:伪代码 part 2:伪代码

  3. 编程之美中的NIM游戏及异或性质应用

    最近看<编程之美>一书,感叹思维之妙,不过看过之后又在很多数学方面的书里面找到了同样的解法例如<组合数学>.<图论导引>等,之后才知道其实很多书上的算法都是源自数学 ...

  4. 【编程题】【Scratch三级】2019.06 猫咪抓老鼠游戏

    猫咪抓老鼠游戏 1. 准备工作 (1)保留小猫角色,添加"Mouse1": (2)默认白色背景. 2. 功能实现 (1)键盘上下左右键控制小猫上下左右移动: (2)老鼠出现在舞台随 ...

  5. 编程之美里的挖雷游戏:

    缘由 今天的新书:编程之美 到手了,随便读了翻了一下.就翻到一个有趣的问题,计算扫雷游戏中未知方块是雷的概率. 看看图,就是那些还可以点的方块是雷的概率是多少.相信大家都玩过,我就不介绍游戏规则了. ...

  6. 编程之美 笔记之——24点游戏

    原著中给出了两种解法:穷举和分治.后来加上去除冗余括号等操作,自己写了四个实现代码,但完全还是用的原著中的算法思想.暂且把自己的实现过程记录下来. 自己的第一种代码实现,完全穷举,没有任何的优化.代码 ...

  7. 《编程之美》笔记之——24点游戏

    原著中给出了两种解法:穷举和分治.后来加上去除冗余括号等操作,自己写了四个实现代码,但完全还是用的原著中的算法思想.暂且把自己的实现过程记录下来. 自己的第一种代码实现,完全穷举,没有任何的优化.代码 ...

  8. 精选的一些《编程之美》相关资料

    又要到一年的招聘季了,肯定又有很多人开始啃<编程之美>了吧.这本书从开阔视野的角度来说很好,不过限于篇幅,有的问题并没有讲清楚(甚至问题叙述模棱两可.被标榜为"鼓励同面试官交流以 ...

  9. 《编程之美》相关参考资料

    转载自:https://blog.csdn.net/wuyuegb2312/article/details/9896831 为了便于查阅,也为了方便后人不必在搜索上浪费时间,我把比较有价值的文章的链接 ...

  10. 面试难,应聘难,好工作,今安在?——《编程之美——微软技术面试心得》为你探路!即将上市,敬请关注!

    这本书是我目前所见到的优秀面试试题的最全集,包含大量有趣且有启发性的题目,一方面对于学生的指导意义重大,另一方面,即使对于我们这些已经工作的人来说,也不失为一本充满智慧与趣味的好书."    ...

最新文章

  1. 常用数据增广方法,解决数据单一问题
  2. Laravel 5.2--如何让表单提交错误,不清空?
  3. python一点基础都没有的怎么办-你们都是怎么学 Python 的?
  4. @select 怎么写存储过程_MySQL4:存储过程和函数
  5. [NOIP]数字三角形
  6. 2011年ESRI北京站IDL视频教程(全)
  7. Pytorch:线性代数
  8. 中文怎么设置 水晶报表 越南文_越南语到底是不是汉语的一门方言?为什么和粤语这么像?...
  9. 耐用的蓝牙耳机推荐,现在比较好的蓝牙耳机点评
  10. 测井储层参数预测+人工智能方法
  11. 计算机转换汉子英语,电脑打字英文怎么转换中文
  12. 准备了个freyja实例项目(单数据源版)
  13. 虚幻引擎UE4加载GIS数据《数字孪生智慧城市》
  14. 创建React + Ts项目
  15. Espresso的详细使用
  16. 用python对股票期货做时序分析
  17. 设计解谜游戏的30堂课
  18. npm中node更新_如何在Node中管理NPM和功能时保持理智
  19. 在一个子组件中调用另一个子组件的方法
  20. 树莓派4B命令行安装网易云音乐播放在线歌曲

热门文章

  1. python dbf 修改_Python修改DBF文件指定列
  2. JavaScript学习笔记(25) JavaScript.then()这个方法是什么意思?
  3. 计蒜客 青出于蓝胜于蓝 【DFS序 + 树状数组】
  4. Spring Aop(入门篇)
  5. Windows7安装无法识别硬盘分区
  6. java谜题读书笔记_《java深度历险》读书笔记(一)
  7. 使用jupyter环境在数据集处理中遇到.ipynb_checkpoints no such file or directory的问题
  8. blackbox_exporter 黑盒监测
  9. 一种用于指导模拟 IC 布局的定制图神经网络模型
  10. 论文阅读:Social Media and Fake News in the 2016 Election