动态规划方法一:
考虑每一层扔鸡蛋,扔下去的结果两种,碎、不碎
如果碎了,说明F在 1~ i-1 之间,还需要在1~ i-1即i-1层楼中搜索
如果没有碎,说明F在 i~ n之间,还需要再i+1~n层即n-i层楼中搜索
记dp[i][k]表示有k个鸡蛋,i层楼中确定F的具体值的最小搜索次数
那么,假设某次搜索在第j楼,根据上面的思路,在第j楼扔下,存在两种结果:碎、不碎
然后根据结果分别在j楼上面或者下面的搜索区间继续搜索F的值
因此可以得到递推公式
dp[i][k] =min{ max(dp[j-1][k-1], dp[i-j][k]) + 1 | 1<=j<=i }
显然,k>=1,而i为0时,表示没有任何楼层,那么dp[0][k]=0
当k=1,只有一个鸡蛋,只能线性搜索,dp[i][1]=i
动态规划方法二(题解方法):
1、无论你在哪层楼扔鸡蛋,鸡蛋只可能摔碎或者没摔碎,碎了的话就测楼下,没碎的话就测楼上。
2、无论你上楼还是下楼,总的楼层数 = 楼上的楼层数 + 楼下的