轮流拿(取)东西问题
来源:互联网 发布:sql多表删除 编辑:程序博客网 时间:2024/06/08 20:13
假设有A、B两个人,轮流从一堆物品中拿物品,每次只能拿限定的个数,判断谁一定会拿到最后一个物品或者要想拿到最后一个物品应该采取什么样的策略。
先看两道具体的题目:
1) 有A、B两个人,从50个苹果中轮流拿苹果,每次只能拿1个或者2个,A先拿,问A应该采取什么样的策略才能保证自己能拿到最后一个苹果。(腾讯面试题)
2) A、B两个人从一堆玻璃球(共100个)中向外拿球,规则如下:① A先拿,然后一人一次交替进行;② 每次只能拿1个、2个或者4个。③ 谁拿最后一个球,谁就是最后的失败者。请问,A、B两个人谁将是失败者?(阿里巴巴面试题)
解题思路:这类题一般从后往前推,确定最后剩下多少个物品时自己一定会获胜,然后再制定相应的策略。
1)A要想获胜,就必须保证他在倒数第二次拿苹果之后还剩下3个,这样无论B拿1个还是2个,最后一个都是A拿到。A要保证最后剩3个,则A需要考虑自己第一次拿了苹果之后,剩下的苹果是3的倍数,这样A可以控制每次A和B拿的苹果之和为3,最后一定会剩下3个。该题中A只需刚开始拿2个,然后保证以后每次拿的个数与B拿的个数之和为3即可。
2)第2)的解题思路类似,B只要保证最后剩下的是1个或者4个,那么最后一个就一定是A拿。具体的策略是B要保证每次A和B拿玻璃球的个数之和为3个或者6个,这样B拿玻璃球之后剩下的玻璃球就是1个或者4个。 0 0
- 轮流拿(取)东西问题
- C语言取花生米(取棋子)系列问题。从一堆中轮流取的情况。
- 博弈论 轮流拿石子
- 轮流取硬币
- 轮流取数
- 取石子儿和拿扑克牌问题
- 轮流拾取火柴问题
- 拿硬币的必胜方 轮流拿硬币 最后拿的输
- 逻辑推理——双方轮流拿球,拿到最后球者胜
- 逻辑思维题之轮流问题
- 解决 Toast 长时间轮流显示问题
- N个线程轮流打印数字问题
- java多线程轮流打印数据问题
- 数组两边轮流取数,求谁和大
- 人物IK设置(改变左右手角度实现拿东西效果)
- 取东西算法
- 回学校拿东西,发现很多东西变了......
- 拿球问题
- ACM 两点距离
- 正圆的居中嵌套
- RFID天线数据传输原理:负载调制
- OpenGLES的简单应用绘图,以及照相机画面变色变形渲染(七)
- HTTP协议简要
- 轮流拿(取)东西问题
- 苹果个人开发证书提交appStore细节
- hdu2838 cow sorting
- thinkphp upload上传显示不存在文件解决
- Hadoop学习三(java api 对hdfs常用操作)
- PowerDesigner生成sql语句时自动导出注释
- C++四种强制类型转换运算符
- Struts2学习笔记(第四天)
- Netty 网络IO BIO