38头牛中选出3头跑得最快的,使用一个每次只能供6头比赛的场地,要求用最快的方法。(整理)
2012-03-15 23:57
609 查看
=================================正解================================================
每6只牛放到赛道里,就相当于一次排序,你要找出38头牛里最快的3只,其实就是找排序里的前3个元素。
赛道已经提示你是用归并排序来实现,直接参考归并排序即可。
由于赛道最多只能容纳6个元素,而每次归并的小箱里的后3个元素是肯定要被淘汰的,所以就是一种特殊的归并。
每次归并只取每个小箱里的前3元素,进行两两归并排序。
搞定。
两两归并排序参考:
http://www.hiahia.org/datastructure/paixu/paixu8.5.1.1-1.htm
本质上来说效率应该还略好于O(nlgn)。
================================下面这种方法有误,并不能保证是最大的3个数==========================================================
从数学计算角度:第一轮:
每组6头共6组.每组取前3名.共18名.与没参加的2头共20头参加第二轮.
第二轮:每组选5头共4组.每组取前3头.共12头参加第三轮.
第三轮:分2组.每组选3.共余6头.参加最后一次比赛.
共比13次
////////////////////
但,我自己算的话,
先把多于的2头,拿掉。
用36头,类似上述的比较。
每次比赛,都是6头一组。
这样,赛到第11轮时,会产生前3名;
这是,把拿掉的两头填进来,共5头,
再需要1轮就得出最终的前三名。
总共需要12轮,比上面的13轮少。
6 * 6 6次
6 * 3 3次
总共还剩 11头 在 分 5 和 6进行两场 分别取前三
最后 在一次
========================================================================
如果不考虑牛的体力问题,如果可以标记牛的号码那么这样可否。
1 6次6组
2 用6组中的第一跑,则剩下5头牛(剔除第一,必定是前三,剔除未进前三的那些组的牛,剔除第三名那组后面的两头牛,剔除第二排第三的那头牛,跑过的牛剩下5头继续比赛)1次
3 加入一头未跑过的牛,6头牛混跑取前二。1次
4 2的第一,3的第一,第二,剩下的那头牛,得出最后的前三。1次
共9次。
每6只牛放到赛道里,就相当于一次排序,你要找出38头牛里最快的3只,其实就是找排序里的前3个元素。
赛道已经提示你是用归并排序来实现,直接参考归并排序即可。
由于赛道最多只能容纳6个元素,而每次归并的小箱里的后3个元素是肯定要被淘汰的,所以就是一种特殊的归并。
每次归并只取每个小箱里的前3元素,进行两两归并排序。
搞定。
两两归并排序参考:
http://www.hiahia.org/datastructure/paixu/paixu8.5.1.1-1.htm
本质上来说效率应该还略好于O(nlgn)。
================================下面这种方法有误,并不能保证是最大的3个数==========================================================
从数学计算角度:第一轮:
每组6头共6组.每组取前3名.共18名.与没参加的2头共20头参加第二轮.
第二轮:每组选5头共4组.每组取前3头.共12头参加第三轮.
第三轮:分2组.每组选3.共余6头.参加最后一次比赛.
共比13次
////////////////////
但,我自己算的话,
先把多于的2头,拿掉。
用36头,类似上述的比较。
每次比赛,都是6头一组。
这样,赛到第11轮时,会产生前3名;
这是,把拿掉的两头填进来,共5头,
再需要1轮就得出最终的前三名。
总共需要12轮,比上面的13轮少。
6 * 6 6次
6 * 3 3次
总共还剩 11头 在 分 5 和 6进行两场 分别取前三
最后 在一次
========================================================================
如果不考虑牛的体力问题,如果可以标记牛的号码那么这样可否。
1 6次6组
2 用6组中的第一跑,则剩下5头牛(剔除第一,必定是前三,剔除未进前三的那些组的牛,剔除第三名那组后面的两头牛,剔除第二排第三的那头牛,跑过的牛剩下5头继续比赛)1次
3 加入一头未跑过的牛,6头牛混跑取前二。1次
4 2的第一,3的第一,第二,剩下的那头牛,得出最后的前三。1次
共9次。
相关文章推荐
- 38头牛中选出3头跑得最快的,使用一个每次只能供6头比赛的场地,要求用最快的方法。
- 一个银行账户5000块,两夫妻一个拿着 存折,一个拿着卡,开始取钱比赛,每次只能取一千块,要求不准出现线程安全问题。
- 给定两个有着相同长度且都在字典内的单词,要求写一个方法来把一个单词变型成另一个单词。 一次只能转换一个字母,且每次生成的单词必须在字典内
- 面试题:判断一个整数是否为偶数,要求使用至少3种方法
- 我在一个前端项目中用js整理的一些通用方法,其中使用到的思想,主要就是约定了。
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)
- 创建一个学生类,按照要求生成各种方法,然后使用数学方法计算某一个元素的规定结果
- 队列和栈面试题(一)— 请编写一个程序,按升序对栈进行排序,要求最多只能使用一个额外的栈存放临时数据
- (要求使用指针方法)一个班有四名学生,五门课。(1)求第一门课的平均分;(2)找出有两门以上课不及格的学生,输出他们的学号、全部课程成绩和平均成绩;(3)找出平均成绩在90分以上或全部课程成绩均在85
- asp.net下的“Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用。”错误的一个可能的成因
- 同一个账号启动两个resin而要求使用不同jdk的解决方法
- 现有一个m * n的网格,从最左上角出发,每次只能向右或者向下移动一格,问有多少种不同的方法可以到达最右下角的格子
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 突破QQ限制每次只能传一个文件的的方法
- 解决yii框架中,使用参数化查询时,IN只能查询一个的代替方法
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 数据库中查询记录时是否每次只能使用一个索引?
- 一个技术小白整理出来的for循环使用几种方法~~