问题描述:

  100根火柴,2人轮流取,每人每次只能取1-7根,取走最后一根火柴的人获胜。问有没有一种策略肯定能够获胜?该策略具体:先取or后取,怎么取?

思维过程:

  step1:题目问的很明显,所以肯定是有一种方法能够获胜的,因为自己读题时对“先取还是后取”字眼比较关注,且由于先取,不能保证另一方取完后的数量,所以假设为后取(这个假设算是一个坑吧)

  step2:问题肯定存在某种规律,我认为是2人每一回合取的火柴数。2人轮流取,后取的肯定能够保证这一轮总数为8,>8的数是不可能的了。

  step3:每一回合按照step2中的这样取,最后还剩4根。当时自己怎么都绕不过来这四根应该怎么办,然后就开始动摇是不是不应该每次使得总和为8,如果不保持这个数的话,取的数就会乱套,也不行(PS:愣是没有想到推翻假设)

  step4:实在不行了,就开始从结局开始往前推,假设2人都是明白道理的话,最后一局肯定是8根,再往前推一局,推推推……发现不行啊,100根太多了。就以10根为例推,还是有点乱。

  step5:最后还是觉得之前保持8根的想法是对的,就从100根倒着减8,减了几次,恍然大悟,可以先取4根,后面就能够保持平衡了……  

结果:

  先取,第一次取4根,后面只要与另一个人在同一回合相加为8就ok.

  (不过刚刚又想到其实后取也是可以的,只要在中途多取几根,多取的总数为4也行,(如果前面的人永远取1根,那第一轮的时候取3根也能凑4)hahha,这个解决方法是刚刚写的时候想到的!)

总结:

  要记得自己假设了什么,有时候推翻假设是关键

——————————————————————————————————————————————————————————————

推广:

  有两堆水果,数量分别为m,n。2人轮流取,每次只能在一堆水果中取,每次可以取1~这堆水果的总量。取走最后一个水果的人获胜。问:同上。

思维过程:

  step1:假设每次都尽可能赢,最后一局的时候,结果为2堆各剩余1个。那么就可以把两堆分成4堆,即两堆中的1个不拿,问题可以转换为谁正好拿完剩余的那些,那么他就是赢的。转化后的问题跟原问题一样了,即两堆中的2个不拿,谁拿完剩余的那些,那么他就是赢家。如果一直往前推的话,到第三次转换的时候就出现问题了,即剩余3个不拿,谁拿完剩余的那些,谁就是赢家(我是到这一步才明白不能递推)。因为他可以直接拿到只剩一个,所以这种每堆只剩3个的情况可以是不存在的。综上,只有两堆都只剩1个,这种情况才是肯定会存在的(在第一句假设上)。(找确定情况)

  step2:往后递推的方式不行,就考虑了此题与上一题的区别,很明显的一点就是,拿的个数放宽了,所以每次拿完之后情况复杂,不能看出规律来。

  step3:这时候,我采用了特例的方法,假设每次每个人只拿一个,分析先拿和后拿的情况,发现跟m+n的奇偶性有关。但是推翻这个假设又想不通了。又将个数实例化,且去比较小的值,但是情况也是乱七八糟的。然后就放弃这个方法了。

  step4:直觉上觉得应该还是应该从后面固定的局面(即两堆各剩下1个)往前推。感觉也是有点漫无目的想。可以说是自己模拟情况,也没有什么进展。

  step5:然后在睡觉前又想了一会,又有点跳回到step1中的想法,后来猛然惊醒,忽然想每次只要跟对方拿的一样就行了啊。然后有修正了一下,感觉只要每一回合之后,两堆剩余的个数一样就可以了,只要谁能够在其这一次拿完之后使得两堆剩余一样就可以了。考虑先拿后拿的问题,由于上一题的经验,可以说先后其实是相对的,所以觉得先后无关,但是仔细想想就发现,m≠n是,为了保证能够获胜,先拿使得两堆数量相同,才能自己赢,因为如果后拿,先拿的人知道这个规律,那么你是不可能使得两堆相等的。(感觉“忽然顿悟”这一点实在是难以琢磨,不知道为何自己忽然就知道了,不过现在想想,可能也跟step1中的递推有关系,因为当时就发现如果这样下去,每次两堆剩下的数量都是一样的。这应该也算是线索之一吧)

结果:

  先拿,每次拿完之后只要保证两堆数量相等即可。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 总结:

  虽然题目看上去差不多,中间也用了一些相同的办法去做,但是感觉到第一问题还是有迹可循的,第二问题就有点靠联想而不是推理或者是逻辑演练了。

  相同点:思路都是从题目中反推出结果成立需要满足的情况,再由这个确定的情况出发,联想或者推理。

  不同点:问1规律明显,问2规律不明显(甚至我都觉得自己找不到规律啊)

math-2人博弈的更多相关文章

  1. POJ 1704 Georgia and Bob(阶梯博弈)题解

    题意:有一个一维棋盘,有格子标号1,2,3,......有n个棋子放在一些格子上,两人博弈,只能将棋子向左移,不能和其他棋子重叠,也不能跨越其他棋子,不能超越边界,不能走的人输 思路:可以用阶梯博弈来 ...

  2. hdu1525 Euclid's Game , 基础博弈

    http://acm.hdu.edu.cn/showproblem.php?pid=1525 题意: 两人博弈,给出两个数a和b, 较大数减去较小数的随意倍数.结果不能小于0,将两个数随意一个数减到0 ...

  3. Educational Codeforces Round 68 (Rated for Div. 2) D. 1-2-K Game (博弈, sg函数,规律)

    D. 1-2-K Game time limit per test2 seconds memory limit per test256 megabytes inputstandard input ou ...

  4. 【HDU】1846 Brave Game

    http://acm.hdu.edu.cn/showproblem.php?pid=1846 题意:二人博弈,1堆石子每次取1~m个,没有石子可取的输,输出先手胜利还是后手胜利. #include & ...

  5. 每周一道数据结构(四)A*算法&博弈树α-β剪枝

    A*算法/博弈树 前阵子考试学了A*算法.博弈树和回溯,自己真是愚蠢至极,根本没就搞明白这些,所以对于这些算法问道的话就不能说清楚,也记不住,所以才有了这篇笔记.在这里感谢面试我的那位工程师~~ A* ...

  6. A*算法&博弈树α-β剪枝

    A*算法&博弈树α-β剪枝 A*算法/博弈树 前阵子考试学了A*算法.博弈树和回溯,自己真是愚蠢至极,根本没就搞明白这些,所以对于这些算法问道的话就不能说清楚,也记不住,所以才有了这篇笔记.在 ...

  7. 学习笔记TF051:生成式对抗网络

    生成式对抗网络(gennerative adversarial network,GAN),谷歌2014年提出网络模型.灵感自二人博弈的零和博弈,目前最火的非监督深度学习.GAN之父,Ian J.Goo ...

  8. canvas 从初级到XX 2# 让我们在之前的基础之上,再迈进一步吧 [中级向] (上)

    还是老样子,先啰嗦一点前言. 最近各种事务缠身,所以也就隔了比较长的时间才开始码这篇文.希望不会这么快就过气. 好了,接下来就开始码代码.(写到中途,突然感觉到的.本篇设计大量初中物理知识,请怀念的往 ...

  9. 浅谈博弈论中的两个基本模型——Bash Game&&Nim Game

    最近在数学这一块搞了蛮多题目,已经解决了数论基础,线性代数(只有矩阵,行列式待坑),组合数学中的一些简单问题.所以接下来不可避免的对博弈论这一哲学大坑开工. 当然,由于我很菜,所以也只能从最基础最容易 ...

随机推荐

  1. Android系统分析之运营商显示流程分析之运营商信息的读取流程二

    运营商显示流程分析之运营商信息的读取流程 一. SIM卡运营商信息的读取 从前面的 运营商信息的获取和赋值 可以知道SIM卡运营商的赋值最终是在 SIMRecords 中完成的, 而SIM卡信息的相关 ...

  2. 自动化测试系列:将常用的Android adb shell 命令行封装为C#静态函数

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 简介:adb命令是常用的Android命令行,自动化.代码调试.手工排查问题都会用的到,这里将常用的一些命令行封装 ...

  3. Maven解决包冲突

    依赖树 $ mvn dependency:tree [WARNING] [WARNING] Some problems were encountered while building the effe ...

  4. Linux TOP命令按内存占用排序和按CPU占用排序

    先输入top 然后 按P – 以 CPU 占用率大小的顺序排列进程列表 按M – 以内存占用率大小的顺序排列进程列表 top命令是Linux下常用的性能分析工具,比如cpu.内存的使用,能够实时显示系 ...

  5. hbuilder + 夜神模拟器

    1. 安装hbuilder.夜神模拟器 2. 将夜神模拟器设为手机版,启用急速模式 3. 打开夜神模拟器设置,进入关于手机,点击版本号启用开发者模式 4. 进入开发者模式设置,启用usb调试 5. h ...

  6. Operation not permitted

    centos7 下,修改文件夹的权限时,报了这么一个错误.linux 下,此法依然奏效. 错误日志: chmod: changing permissions of '/opt/apps/images/ ...

  7. React-native完整配置流程

    开头敲黑板!! 无论你是RN的新手还是老手,跟着流程走,RN项目搭建起来完全不是问题!   一.网址收集 expo配置网址:https://blog.expo.io/building-a-react- ...

  8. winform使用log4.net

    因为我最近负责的Winform项目,好多都用到了这个log4net的日志功能,开发程序对数据一般都要求做到雁过留痕,所以日志对于我们程序员是不可或缺.因此我把对log4net的使用做一个记录总结,以便 ...

  9. CSS3 3D图片立方体旋转

    html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...

  10. 关于两栏布局,三栏布局,一级点击三角触发select的onchange事件问题

    首先看这样一个效果:,这个截图来自移动端的列表的一整行,在这个效果当中,存在两个技术点,首先选择祝福卡这个宽度是一定的,右边的部分,宽度随着手机屏幕的宽度而自适应,再一个技术点就是点击最右侧向下箭头, ...