第九届蓝桥杯填空题。当初看到题目的时候还很窃喜是眼熟的面试题,结果过于紧张…
原题:(前略)用3个手机,楼高1000,算出最优策略下最坏情况的测试次数。
算法核心:动态规划
代码(Java):
public class ThrowEggs {
public static void main(String[] args) {
int[][] d = new int[1001][4];//有j个鸡蛋测试i层楼需要扔几次
for(int i = 1; i <= 1000; i++){
d[i][1] = i;//1个鸡蛋扔i次可以测试i层楼
}
for(int i = 1; i <= 1000; i++){
int min = Integer.MAX_VALUE;
for(int j = 1; j <= i; j++){
min = Math.min(min, Math.max(j, d[i-j][2]+1));
}
d[i][2] = min;
}
for(int i = 1; i <= 1000; i++){
int min = Integer.MAX_VALUE;
for(int j = 1; j <= i; j++){
min = Math.min(min, Math.max(d[j-1][2]+1,
d[i-j][3]+1));
}
d[i][3] = min;
}
System.out.println(d[1000][3]);
}
}
随便写的,可以再套一个循环来表示分别扔k个蛋,这里只求三个蛋,就不循环了。
答案是19。
网友评论