美文网首页
n层楼扔m个鸡蛋问题(java代码)

n层楼扔m个鸡蛋问题(java代码)

作者: Allerbmu | 来源:发表于2018-04-04 14:22 被阅读0次

    第九届蓝桥杯填空题。当初看到题目的时候还很窃喜是眼熟的面试题,结果过于紧张…

    原题:(前略)用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。

    相关文章

      网友评论

          本文标题:n层楼扔m个鸡蛋问题(java代码)

          本文链接:https://www.haomeiwen.com/subject/upmkhftx.html