抢数游戏及其演绎
来源:互联网 发布:centos ftp客户端 编辑:程序博客网 时间:2024/04/30 01:26
经典的抢数游戏,即:
两个人1开始轮流报数,每人每次可加1或2,谁先报到30,谁就胜利。
本来想自己写的,但是发现已经有人总结出来了:经典的抢数游戏
不过我还是把我们的思路说一下吧:
1. 基本方法
很显然,对于每次加1或者2,最终数到30来说,可以逆推:
甲想要数到30,则必须让乙只能数到28或29,则甲前一次应数到27;甲想要数到27,则必须让乙只能数到25或26,则甲前一次应数到24;……甲想要数到6,则必须让乙只能数到4或5,则甲前一次应数到3;甲想要数到3,则必须让乙只能数到1或2,即乙先报。
很明显,对于这题,后报数的人有必胜策略。
总结一下经验:
必胜策略中,必须要报到3,6,9,……,24,27才能报到30。
而这些关键数字都是(1 + 2 =)3 的倍数。这是不是个巧合呢?
2. 演绎一下
可以试着演绎一下,每次可加1,2,3,还是要数到30,试一试:
甲想要数到30,则必须让乙只能数到27、28或29,则甲前一次应数到26;甲想要数到26,则必须让乙只能数到23、24或25,则甲前一次应数到22;……甲想要数到6,则必须让乙只能数到3、4或5,则甲前一次应数到2;
很明显,对于这题,先报数的人有必胜策略。
显然,关键数字是:2,6,10,……,22,26,而(1 + 3 =)4并不是这些数的因子,看来真的只是个巧合?
不不不,君且安坐,听我一言:
仔细观察,所有关键数的差都是4!
那么,我们可以试着归纳一下:
为了方便,称可加的最小数字为 s, 最大数字是 t,其和 s + t = f,最终数字是end
则为了抢到最终的end,必胜策略就是抢先数到与end的差值为f的倍数的那些关键字。
3. 推广一下
现在有了这个归纳,可以试着推广一下。
现在令每次可加2或3,注意,这里可加的最小数不再是1,而是2,还是数到30:
s = 2t = 3f = s + t = 5则需要抢到 25, 20, 15, 10, 5.
后数者有必胜策略。
4. 终极必杀
那么,既然我们知道了这个策略,怎么能迅速判断出先数还是后数才能必胜呢?
很简单,再总结一下:
对于可加1,2,先数到30: 30 / (1+2) = 10 余 0, 后数必胜;对于可加1,2,3,先数到30: 30 / (1+3) = 7 余 2, 先数必胜;对于可加2,3,先数到30: 30 / (2+3) = 5 余 0, 后数必胜;# 为了对比,再加几个:对于可加1,2,3,先数到33: 27 / (1+3) = 6 余 3, 先数必胜;
可见:
对于最终数 end 是 (s + t =)f 的整数倍的情况,后报数有必胜策略,策略就是一直占据关键数,即与 end 的差值是 f 的整数倍的数字;
而对于最终数 end 不是(s + t =)f的整数倍的情况,先报数有必胜策略,策略就是先数到余数,这样下一次轮到自己的时候,就能占据关键数,即与 end 的差值是 f 的整数倍的数字。(这样看来,余数其实也可以看做关键数。)
简单测试一下:
oukohou: hey man, 我们来玩数字游戏吧,每次可加2,3,4,谁先数到20谁赢;ccslience:yeah, why not.(同时心里暗算:2+4=6,20/6=3余2,恩我要先数),I begin first--2;oukohou: 5;ccslience:8;(key number)oukohou: 10;ccslience:14;(key number)oukohou: 16;ccslience:20。Victory!oukohou: well, you really smart……ccslience:haha~~(同时心里决定给这篇博客点个大大的赞~)
这样,下次和小伙伴玩的时候,就能成竹在胸胜券在握镇定自若地决定自己是先数还是后数啦~
5. 版权所属
注意到开头的时候我写的是:
不过我还是把我们的思路说一下吧:
之所以说“我们”,这个抢数游戏,其实是国庆出去玩的时候,和我家ccslience一起玩抢数游戏的时候慢慢总结出来的。
真好。
hello there, ccslience.
与君相遇知何处,两叶浮萍大海中。
- 抢数游戏及其演绎
- 用c语言演绎“生命游戏”
- 用c语言演绎“生命游戏”
- 用c语言演绎“生命游戏”001
- [2013.05.14]ALOHA与抢数游戏
- Blender及其游戏引擎
- Nim 游戏及其变形
- Blender及其游戏引擎
- 浮点数及其国际标准
- catalan数及其应用
- 演绎真实世界?看人性在游戏中的养成之路
- QQ2355432732棋牌游戏服务器哪里有,发布站服务器哪里有,美国kt机房完美演绎
- 演绎数据库
- 著名游戏引擎及其开发游戏
- 数独游戏求解
- 猜数游戏程序
- 人机猜数游戏
- 1995猜数游戏
- chage命令详解
- 【好文讲的很清晰】复合索引
- JDBC笔记
- [微信小程序]时间戳转日期
- Qt常用类QWidget
- 抢数游戏及其演绎
- eigenface
- [网络流24题]骑士共存问题 二分图/最大点权独立集
- C语言volatile关键字
- Git常用命令汇总
- Semantic Compositional Networks for Visual Captioning
- 实现select change 点击重复内容无法触发问题
- XML中输入特殊符号
- 解决:win10下VS2010中文输入法输入英文出现BUG