报数游戏2
2014-02-15 19:09
225 查看
题目来源:
庞果网
题目简介:
N个人(编号1-N),站成一排,进行报数游戏。报数过程可能进行很多轮,有如下规则: (1) 如果剩余人数不超过3个人,则游戏结束。 (2) 大家报数,然后留下报奇数的人从第一个人继续游戏,或者留下报偶数的人继续游戏。 重复如此(1)(2)两步骤,到游戏结束。 问:最终剩下的三人组有多少种情况?(注意是三人组,例如如果最后剩下2个或者1个人,不计入结果中)。 输入n, (0<n<=10000000) 输出最终结果。
解题思路:
我们试探性地取几个特定的值来帮助我们发现规律。显然当N = 1/2时,result = 0;N = 3时,result = 1;当N = 4时,result = 0; N = 5时,采用第一轮偶数淘汰的方法可最后剩下三人组,此时result = 1,以此类推。我们不难发现,采用偶数留下或者奇数留下的方法,总是把所有人分为两部分,其中一部分含有N/2个人,另外一部分含有N – N/2个人。若我们淘汰含有N/2个人的那一组,能剩下三人组的所有可能数即为N – N/2个人中能剩下三人组的所有可能种数;反之我们如果留下N/2人组,淘汰N
– N/2人组,那么剩下三人组所有可能种数即为N/2个人中能剩下三人组的可能种数。根据这种分析,我们很清楚的知道这个问题可以化为一个递归问题,而递归的公式为f(N)
= f(N/2) + f(N-N/2)。
举例说明:
当N = 10时,这10个人依次报数为1.2.3.4.5.6.7.8.9.10
若我们淘汰奇数位的同学,则剩下2.4.6.8.10这五位同学。这五位同学重新报数1 2 3 4 5,根据前面的分析结果我们可知此时剩下三人组的可能种数为1种;
同样若我们淘汰偶数位的同学,则剩下1.3.5.7.9这五位同学,剩下三人组的可能种数也为1种;
综上所述,当N=10时,result = 1+1=2。
完整代码请见:
http://www.anycodex.com/blog/?p=90
庞果网
题目简介:
N个人(编号1-N),站成一排,进行报数游戏。报数过程可能进行很多轮,有如下规则: (1) 如果剩余人数不超过3个人,则游戏结束。 (2) 大家报数,然后留下报奇数的人从第一个人继续游戏,或者留下报偶数的人继续游戏。 重复如此(1)(2)两步骤,到游戏结束。 问:最终剩下的三人组有多少种情况?(注意是三人组,例如如果最后剩下2个或者1个人,不计入结果中)。 输入n, (0<n<=10000000) 输出最终结果。
解题思路:
我们试探性地取几个特定的值来帮助我们发现规律。显然当N = 1/2时,result = 0;N = 3时,result = 1;当N = 4时,result = 0; N = 5时,采用第一轮偶数淘汰的方法可最后剩下三人组,此时result = 1,以此类推。我们不难发现,采用偶数留下或者奇数留下的方法,总是把所有人分为两部分,其中一部分含有N/2个人,另外一部分含有N – N/2个人。若我们淘汰含有N/2个人的那一组,能剩下三人组的所有可能数即为N – N/2个人中能剩下三人组的所有可能种数;反之我们如果留下N/2人组,淘汰N
– N/2人组,那么剩下三人组所有可能种数即为N/2个人中能剩下三人组的可能种数。根据这种分析,我们很清楚的知道这个问题可以化为一个递归问题,而递归的公式为f(N)
= f(N/2) + f(N-N/2)。
举例说明:
当N = 10时,这10个人依次报数为1.2.3.4.5.6.7.8.9.10
若我们淘汰奇数位的同学,则剩下2.4.6.8.10这五位同学。这五位同学重新报数1 2 3 4 5,根据前面的分析结果我们可知此时剩下三人组的可能种数为1种;
同样若我们淘汰偶数位的同学,则剩下1.3.5.7.9这五位同学,剩下三人组的可能种数也为1种;
综上所述,当N=10时,result = 1+1=2。
完整代码请见:
http://www.anycodex.com/blog/?p=90
相关文章推荐
- 【英雄会】报数游戏
- 报数游戏
- 英雄会报数游戏(3)实现
- 报数游戏,滑动解锁,蓝桥
- B - 报数游戏
- csu----报数游戏
- 敲7游戏,(报数进阶)
- 英雄会(csdn pongo)题解之报数游戏3
- 报数游戏python 解答
- 湖南省第七届大学生计算机程序设计竞赛 报数游戏
- 1、两人做游戏,轮流报数,报出的数只能是1、2、3、4、5、6、7、8其中之一,把两个人报出的数连加起来,谁报数后加起来的和是123,谁就获胜,让你先报,为了确保胜利,你第一个数报多少?
- 初级java练习(报数杀人游戏)
- CSDN 报数游戏-双向循环链表实现
- 英雄会-----报数游戏(3)
- 编程题:报数游戏
- 报数游戏
- 报数游戏(模拟 枚举)
- 蓝桥杯赛题-填空题:报数游戏(Vector.add()与Vector.remove())
- csdn英雄会(pongo)题解之报数游戏2