问题1 :
题目:一种石头,在某一高度扔下就会碎,在这个高度以下不会碎,高度以上一定碎。现在有4个石头,1000层的楼房,需要测定这个石头破碎的高度。求最少多少次一定可以测出来。
问题2 :
题目:一个100层的大厦,你手中有两个相同的鸡蛋(玻璃球或围棋)。从这个大厦的某一层扔下鸡蛋((玻璃球或围棋))就会碎,用你手中的这两个鸡蛋(玻璃球或围棋),找出一个最优的策略,来得知那个临界层面。
这种问题 一般让人想到用二分的解法,但是二分法的最大深度为logn,那么石头有限如何选择合适的抛石头层数则是很重要的。
网上目前主流解法就是动态规划,因此我好好学习学习相关知识。我看了解法 觉得 动态规划解决 这种问题 最优解 就是处理 哪里扔可以保证扔的次数最少。
楼层 有n个,球有K 个
F(n,k) = min{max{f(r,k-1),f(r+1,k)}+1, 1=<r<=n}
这个的意思 就是F(n,k)的含义 n层楼 k个球最少次数确定临界层
其实 r就是用来表示 我从哪一层开始探测,当然需要考虑 从第一层到第n层中的某一个来开始处理。
情况 假设从第r层 开始扔
如果 球碎了 ,那么 一定在1 - r层