有趣的题目
2015-04-03 09:09
211 查看
递归思想
转自这里
1. 两个人从1开始,轮流报数,每个人都只能报接下来的一个数或两个数。比如第一个人可以报1,也可以报1、2;如果第一个人报1、2,第二个人就可以报3或者3、4;然后第一个人又报……这样报下去,最先报到30的人获胜,求必胜策略。
最先报到30的人获胜,那么先报到27的人就一定可以获胜,同理先报到24的人就一定能获胜……递归下去。21,18,15……,最终得到的结论就是先报到3的人必胜。也就是说,后报者必胜。不管先报者报多少,后报者始终能报到3的倍数,必胜。
如果先报到30的人输,同理,先报到29的人就赢了,然后同样递归,26,23,20……
有10枚硬币,每人轮流取硬币,可以拿一枚、两枚或四枚,取到最后一枚硬币者胜。求必胜策略。
利用递归思想解答:
转自这里
1. 两个人从1开始,轮流报数,每个人都只能报接下来的一个数或两个数。比如第一个人可以报1,也可以报1、2;如果第一个人报1、2,第二个人就可以报3或者3、4;然后第一个人又报……这样报下去,最先报到30的人获胜,求必胜策略。
最先报到30的人获胜,那么先报到27的人就一定可以获胜,同理先报到24的人就一定能获胜……递归下去。21,18,15……,最终得到的结论就是先报到3的人必胜。也就是说,后报者必胜。不管先报者报多少,后报者始终能报到3的倍数,必胜。
如果先报到30的人输,同理,先报到29的人就赢了,然后同样递归,26,23,20……
有10枚硬币,每人轮流取硬币,可以拿一枚、两枚或四枚,取到最后一枚硬币者胜。求必胜策略。
利用递归思想解答:
硬币总数是一枚,先取者赢; 硬币总数是两枚,先取者赢; 硬币总数是三枚,先取者输; 硬币总数是四枚,先取者赢; 硬币总数是五枚,先取者赢(自己取两枚,对方面临三枚的情形,必输); 硬币总数是六枚,先取者输(不管取多少,对方面临的情形都是必胜的); 硬币总数是七枚,先取者赢(自己取一枚,对方面临六枚的情形,必输); 硬币总数是八枚,先取者赢(自己取两枚,对方面临六枚的情形,必输); 硬币总数是九枚,先取者输(不管取多少,对方面临的情形都是必胜的); 硬币总数是十枚,先取者赢(自己取一枚,对方面临九枚的情形,必输)。
相关文章推荐
- 一道有趣题目
- 一道有趣的C#考试题目
- 几个有趣的算法题目
- 谈谈一些有趣的CSS题目(十三)-- 巧妙地制作背景色渐变动画!
- 有趣的题目
- 腾讯2017年实习生编程题目(第三题)——有趣的数字 小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢?
- [转贴] 一个关于C语言字串有趣的小题目
- 有趣的题目
- 谈谈一些有趣的CSS题目(九)-- 巧妙的实现 CSS 斜线
- 最近在网上看见的一个有趣的题目 蛇形数组
- 一道有趣的C#考试题目
- 有趣的题目
- 谈谈一些有趣的CSS题目(十四)-- 纯 CSS 方式实现 CSS 动画的暂停与播放!
- codeforces 938D Buy a Ticket 有初值的Dijkstra、有趣的题目
- 有趣的题目(进制转换)
- 一道有趣的笔试题目!
- 有趣的题目“求N个人中,有至少2个人同一生日的概率”
- 12个有趣的c面试题目
- 谈谈一些有趣的CSS题目(二)-- 从条纹边框的实现谈盒子模型
- 从一个有趣的题目理解享元模式