38头牛中选出3头跑得最快的,使用一个每次只能供6头比赛的场地,要求用最快的方法。
2013-09-06 11:30
162 查看
这是华为笔试的一道题目,我的答案是至少9次,分析如下,如果有误麻烦纠正。
38头牛分六组:G11、G12、G13、G14、G15、G16;每组六头,最后还剩2头未参加比赛;
第一轮比赛:以上六组各比一次,然后各组排名;各组最快的排在前面,如G11[0]表示G11组的第一名,G11[1]表示第二名,依此类推;(已经进行了6次比赛)
第二轮比赛:1、取各组的第一名G11[0]、G12[0]、G13[0]、G14[0]、G15[0]、G16[0],进行比赛;(进行一次比较)
2、决出前三名:假设是G1i[0]、G1j[0]、G1k[0];(1<i、j、k<6);
3、取G1i组的前三名,G1j组的前两名,G1k组的第一名(即G1k[0]),外加为参赛的两头;总共3+2+1+2=8;(前三名必定在其中,应该很容易想得明白)
第三轮比赛:其实,G1i组的第一名必定是前三名,所以只需要在剩下的7头中赛出前两名即可 ,但是无论剩下的是8头还是7头,至少都要进行两次比赛,才能决出前三名,所以 第三轮要进行两次比赛(需要进行两次比赛)
综上所述:至少要进行:6+1+2=9,九次比赛;
以上只是我能想到的最少的比较次数,至于是不是最优的,还需要数学证明;欢迎各位朋友给出最少次数的数学证明。
38头牛分六组:G11、G12、G13、G14、G15、G16;每组六头,最后还剩2头未参加比赛;
第一轮比赛:以上六组各比一次,然后各组排名;各组最快的排在前面,如G11[0]表示G11组的第一名,G11[1]表示第二名,依此类推;(已经进行了6次比赛)
第二轮比赛:1、取各组的第一名G11[0]、G12[0]、G13[0]、G14[0]、G15[0]、G16[0],进行比赛;(进行一次比较)
2、决出前三名:假设是G1i[0]、G1j[0]、G1k[0];(1<i、j、k<6);
3、取G1i组的前三名,G1j组的前两名,G1k组的第一名(即G1k[0]),外加为参赛的两头;总共3+2+1+2=8;(前三名必定在其中,应该很容易想得明白)
第三轮比赛:其实,G1i组的第一名必定是前三名,所以只需要在剩下的7头中赛出前两名即可 ,但是无论剩下的是8头还是7头,至少都要进行两次比赛,才能决出前三名,所以 第三轮要进行两次比赛(需要进行两次比赛)
综上所述:至少要进行:6+1+2=9,九次比赛;
以上只是我能想到的最少的比较次数,至于是不是最优的,还需要数学证明;欢迎各位朋友给出最少次数的数学证明。
相关文章推荐
- 38头牛中选出3头跑得最快的,使用一个每次只能供6头比赛的场地,要求用最快的方法。(整理)
- 给定两个有着相同长度且都在字典内的单词,要求写一个方法来把一个单词变型成另一个单词。 一次只能转换一个字母,且每次生成的单词必须在字典内
- 一个银行账户5000块,两夫妻一个拿着 存折,一个拿着卡,开始取钱比赛,每次只能取一千块,要求不准出现线程安全问题。
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 数据库中查询记录时是否每次只能使用一个索引?
- 队列和栈面试题(一)— 请编写一个程序,按升序对栈进行排序,要求最多只能使用一个额外的栈存放临时数据
- 创建一个学生类,按照要求生成各种方法,然后使用数学方法计算某一个元素的规定结果
- 同一个账号启动两个resin而要求使用不同jdk的解决方法
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)
- 突破QQ限制每次只能传一个文件的的方法
- GIT 版本控制软件的常用命令记录每次更新到仓库 现在我们手上已经有了一个真实项目的 Git 仓库,并从这个仓库中取出了所有文件的工作拷贝。接下来,对这些文件作些修改,在完成了一个阶段的目标和使用方法
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- asp.net下的“Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用。”错误的一个可能的成因
- 面试题:判断一个整数是否为偶数,要求使用至少3种方法
- 解决yii框架中,使用参数化查询时,IN只能查询一个的代替方法
- 【转】数据库中查询记录时是否每次只能使用一个索引?
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。 提交
- 程序员面试金典——解题总结: 9.18高难度题 18.3编写一个方法,从大小为n的数组中随机选出m个整数。要求每个元素被选中的概率相同。