关于取火柴棒问题取胜方法的一些思考(简述)
2015-05-29 14:52
351 查看
取火柴棒游戏的问题叙述:
桌上有n根火柴棒,甲乙两人按照如下规则轮流取走这些火柴棒:
1.每次只允许取走1~2根火柴棒;
2.最后一次取走火柴棒的人获胜;
取胜方法:
若甲先取,且甲想要取胜,那么可以考虑如下一种策略(我们姑且就称之为策略A吧):
甲先取,之后乙取,若乙取1个火柴棒,那么之后甲就取2个火柴棒;若乙取2个火柴棒,则甲取1个火柴棒,总之就是保证甲+乙=3,那么,就产生了如下3种情况:
1)n=3k+1,k是整数:
这种情况下,甲要取胜,方法为:先取1个火柴棒,那么还剩下3k个火柴棒,之后采取策略A.这样,就能保证每回合都取走3个,且甲取后一次.以此类推,甲就一定能取胜.
2)n=3k+2,k是整数:
这种情况下,甲要取胜,方法为:先取2个火柴棒,那么还剩下3k个火柴棒,之后采取策略A.这样,就能保证每回合都取走3个,且甲取后一次.以此类推,甲就一定能取胜.
3)n=3k,k是整数;
这种情况下,甲要么先取1个,要么先取2个.剩下的就是:3k-1或者3k-2;而3k-1=(3k+2)-3;
3k-2=(3k+1)-3 在这种情况下,甲是必输的.因为这个问题可以等价于乙先取3k-1或3k-2个火柴棒,也就是3k+2或3k+1个火柴棒,这与上述1),2)的情况是一样的.所以,这种情况下,甲必输
总结:
在甲先取的情况下,胜负如下
1)若n=3k+1或者n=3k+2
甲采取策略A必胜
2)若n=3k
乙一定能用策略A取得胜利,亦即乙必胜.
进一步推广取火柴棒问题,描述如下:
桌上有n个火柴棒,甲乙两人按照如下规则轮流取走这些火柴棒:
1)每次只允许取走1~m个火柴棒;
2)最后一次取走火柴棒的人获胜;
我们可以从上面的推理中类推出此问题的解,取胜方法策略为(我们姑且称之为策略B):
若甲先取,且甲想取胜
甲先取若干个火柴棒,之后乙取,若乙取1个火柴棒,那么之后甲就取m个火柴棒;若乙取2个火柴棒,则甲取m-1个火柴棒......总之就是保证甲+乙=m+1,那么,就产生了如下m+1种情况:
1)n=(m+1)*k+1,k是整数;
甲先取1个火柴棒,那么还剩下(m+1)*k个火柴棒,之后采取策略B,这样,就能保证每回合都取走m+1个,且甲取后一次.以此类推,甲就一定能取胜.
2)n=(m+1)*k+2,k是整数:
甲先取2个火柴棒,那么还剩下(m+1)*k个火柴棒,之后采取策略B,这样,就能保证每回合都取走m+1个,且甲取后一次.以此类推,甲就一定能取胜.
......
......
m)n=(m+1)*k+m,k是整数:
甲先取m个火柴棒,那么还剩下(m+1)*k个火柴棒,之后采取策略B,这样,就能保证每回合都取走m+1个,且甲取后一次.以此类推,甲就一定能取胜.
m+1)n=(m+1)*k,k是整数:
这种情况下,甲要么先取1个,要么先取2个,要么先取3个,......要么先取m个,那么分别还剩下:(m+1)*k-1,(m+1)*k-2,(m+1)*k-3,......,(m+1)*k-m个火柴棒,亦即[(m+1)*k+m]-(m+1),......,[(m+1)*k+1]-(m+1)个火柴棒.这相当于上面的1)~m)这m种情况,只不过先取的是乙,这种情况下,乙必胜.
总结:
甲先取,且甲想取胜
1)若n=(m+1)*k+1,(m+1)*k+2,......,(m+1)*k+m
采取上述策略,甲一定能取得胜利
2)若n=(m+1)*k
乙采取上述策略,乙一定能取得胜利.
从上面的结论,我们可以看到,只有一种情况下,乙是必胜的,那就是n=(m+1)*k,其余都是甲必胜,可见,甲必胜的概率随着m的增加而不断变大,同时,我们也可以看出,先手者胜率高.
最后,希望有兴趣的童鞋能够通过本文有所启发,那就再好不过了.如果还有童鞋有什么疑问或者不同的看法,欢饮关注微信公众号Yongf与我进行交流
或者扫描下面的二维码关注下,在上面留下您的看法,我都会一一回复.愿与您共进步
桌上有n根火柴棒,甲乙两人按照如下规则轮流取走这些火柴棒:
1.每次只允许取走1~2根火柴棒;
2.最后一次取走火柴棒的人获胜;
取胜方法:
若甲先取,且甲想要取胜,那么可以考虑如下一种策略(我们姑且就称之为策略A吧):
甲先取,之后乙取,若乙取1个火柴棒,那么之后甲就取2个火柴棒;若乙取2个火柴棒,则甲取1个火柴棒,总之就是保证甲+乙=3,那么,就产生了如下3种情况:
1)n=3k+1,k是整数:
这种情况下,甲要取胜,方法为:先取1个火柴棒,那么还剩下3k个火柴棒,之后采取策略A.这样,就能保证每回合都取走3个,且甲取后一次.以此类推,甲就一定能取胜.
2)n=3k+2,k是整数:
这种情况下,甲要取胜,方法为:先取2个火柴棒,那么还剩下3k个火柴棒,之后采取策略A.这样,就能保证每回合都取走3个,且甲取后一次.以此类推,甲就一定能取胜.
3)n=3k,k是整数;
这种情况下,甲要么先取1个,要么先取2个.剩下的就是:3k-1或者3k-2;而3k-1=(3k+2)-3;
3k-2=(3k+1)-3 在这种情况下,甲是必输的.因为这个问题可以等价于乙先取3k-1或3k-2个火柴棒,也就是3k+2或3k+1个火柴棒,这与上述1),2)的情况是一样的.所以,这种情况下,甲必输
总结:
在甲先取的情况下,胜负如下
1)若n=3k+1或者n=3k+2
甲采取策略A必胜
2)若n=3k
乙一定能用策略A取得胜利,亦即乙必胜.
进一步推广取火柴棒问题,描述如下:
桌上有n个火柴棒,甲乙两人按照如下规则轮流取走这些火柴棒:
1)每次只允许取走1~m个火柴棒;
2)最后一次取走火柴棒的人获胜;
我们可以从上面的推理中类推出此问题的解,取胜方法策略为(我们姑且称之为策略B):
若甲先取,且甲想取胜
甲先取若干个火柴棒,之后乙取,若乙取1个火柴棒,那么之后甲就取m个火柴棒;若乙取2个火柴棒,则甲取m-1个火柴棒......总之就是保证甲+乙=m+1,那么,就产生了如下m+1种情况:
1)n=(m+1)*k+1,k是整数;
甲先取1个火柴棒,那么还剩下(m+1)*k个火柴棒,之后采取策略B,这样,就能保证每回合都取走m+1个,且甲取后一次.以此类推,甲就一定能取胜.
2)n=(m+1)*k+2,k是整数:
甲先取2个火柴棒,那么还剩下(m+1)*k个火柴棒,之后采取策略B,这样,就能保证每回合都取走m+1个,且甲取后一次.以此类推,甲就一定能取胜.
......
......
m)n=(m+1)*k+m,k是整数:
甲先取m个火柴棒,那么还剩下(m+1)*k个火柴棒,之后采取策略B,这样,就能保证每回合都取走m+1个,且甲取后一次.以此类推,甲就一定能取胜.
m+1)n=(m+1)*k,k是整数:
这种情况下,甲要么先取1个,要么先取2个,要么先取3个,......要么先取m个,那么分别还剩下:(m+1)*k-1,(m+1)*k-2,(m+1)*k-3,......,(m+1)*k-m个火柴棒,亦即[(m+1)*k+m]-(m+1),......,[(m+1)*k+1]-(m+1)个火柴棒.这相当于上面的1)~m)这m种情况,只不过先取的是乙,这种情况下,乙必胜.
总结:
甲先取,且甲想取胜
1)若n=(m+1)*k+1,(m+1)*k+2,......,(m+1)*k+m
采取上述策略,甲一定能取得胜利
2)若n=(m+1)*k
乙采取上述策略,乙一定能取得胜利.
从上面的结论,我们可以看到,只有一种情况下,乙是必胜的,那就是n=(m+1)*k,其余都是甲必胜,可见,甲必胜的概率随着m的增加而不断变大,同时,我们也可以看出,先手者胜率高.
最后,希望有兴趣的童鞋能够通过本文有所启发,那就再好不过了.如果还有童鞋有什么疑问或者不同的看法,欢饮关注微信公众号Yongf与我进行交流
或者扫描下面的二维码关注下,在上面留下您的看法,我都会一一回复.愿与您共进步
相关文章推荐
- Linux平台安装xtools
- 使用ECharts实现数据图表分析
- 使用adb shell dumpsys检测Android的Activity任务栈
- jQuery 验证表单
- Oracle Cursor用法总结
- ExpandListView
- android Toast问题
- html手机端适配简介
- R语言函数环境空间
- List::find、search
- vi 常用命令
- android关于onActivityResult提前调用的问题
- Theos使用
- 【STL源码剖析读书笔记】自己实现list之MyList
- Code First 数据注释
- 【STL源码剖析读书笔记】自己实现list之MyList
- Unix网络编程学习笔记之第5章 TCP客户端/服务器程序示例
- Java下利用Jackson进行JSON解析和序列化
- 生拉硬套设计模式(一),关于装饰者模式在Android项目中的运用。
- 一些午后负能量 看完真是豁然开朗