问题描述
- 一个关于二分法的算法问题
-
一个建筑有n层,有k个学生,我们想用学生往下跳的方式寻找所谓的“致命楼层e”,也就说挑一个学生从这一层(e)向下跳会死人。有个函数jump(i)可以判断第i层是否致命,返回true是致命,false是不致命。假设jump(1)是false,saut(n)是true。一个学生可以重复利用。目的是使跳的次数最小化。
(1)如果 k = 1,怎样寻找一个算法?跳的次数的最坏情况是?
(2)如果k ≥logn(以2为底),设计一个算法,使得最坏情况是o(log(n))次
(3)如果k<logn(以2为底),设计一个算法,使得最坏情况是o(k + n/2^(k-1))
(4)如果k = 2,设计一个算法使得o(n的平方根)。
解决方案
没有理解你的问题。既然一个学生可以重复利用,那么要k个学生干嘛?
解决方案二:
第一问只能从一楼开始一楼一楼的跳,最坏情况是O(n)
解决方案三:
没有理解你的问题。。。你是要设计一个问题吗?
解决方案四:
楼主的意思应该是每个学生可以重复从1楼调到n楼 测试k个学生的跳楼情况 总结出哪一层是死亡人数最多的吧
解决方案五:
题目表意不明,就像上面所说的,楼主所说的“致命楼层e”是只一个人的数据就可,还是多个参照数据,而且问题所问的都是最
坏的情况,也就是跳的最多次数k*e或是e
时间: 2024-12-30 22:55:11