群里看到的算法题及解:
题目是这样,
有2台XBOX,现在已知有一栋n层的楼,
如果x层楼把XBOX扔下去不坏,那么从x-1层楼把XBOX扔下去一定不坏,
如果x层楼把XBOX扔下去坏了,那么从x+1层楼把XBOX扔下去一定坏掉。
现在要找出最高从那一层扔下去,XBOX可以不坏。问最少需要扔几次?
假设我们从m层扔XBOX下去
坏了,往下找,那么我们此时只有1台XBOX,这时候只能从第一层开始逐层扔起,最多需要扔m-1次,共需要扔m次。
没坏,网上找,那么我们重新选定一层q q>m 重新开始此次实验,如果检测n-m层最多也需要m-1次的话,总共也是需要扔m次,此时最差解就为m。
用递推思路的思考
假设 找出n层中临界层数,需要最少扔x次。
那么 找出n+x+1层中临界层数,需要最少扔x+1次。
第一次在x+1层处扔,坏了,需要从第一层开始扔x次找出解,没坏,上面n层的解为x。
且此时为最优解
假设我们扔x次,那么
第一次在x层处扔
第二次在x + (x-1)层处扔
层数 = 等差数列求和
n = x(x+1)/2
如当100层时 100 = x(x+1)/2 x 向上取整为14,最少需要扔14次。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26899445/viewspace-755920/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26899445/viewspace-755920/