zoukankan      html  css  js  c++  java
  • lintcode584- Drop Eggs II- medium

    There is a building of n floors. If an egg drops from the k th floor or above, it will break. If it's dropped from any floor below, it will not break.

    You're given m eggs, Find k while minimize the number of drops for the worst case. Return the number of drops in the worst case.

    Example

    Given m = 2n = 100 return 14
    Given m = 2n = 36 return 8

     
    动态规划+递归。用二元数组存储某鸡蛋某层所需的次数。迭代试扔第一个鸡蛋,在某层扔。1.扔碎了即转为鸡蛋少一个,楼层少一层的子问题。2.没扔碎即转化为鸡蛋没有少楼层少为上半层那么多的子问题。
     
    思维方式见:http://datagenetics.com/blog/july22012/index.html的“Look see I can do three” 
     
     
    public class Solution {
        /*
         * @param m: the number of eggs
         * @param n: the number of floors
         * @return: the number of drops in the worst case
         */
         
        public int dropEggs2(int m, int n) {
            // write your code here
            int[][] dp = new int[m + 1][n + 1];
            
            for (int i = 1; i <= m; i++){
                dp[i][0] = 0;
                dp[i][1] = 1;
            }
            
            for (int j = 1; j <= n; j++){
                dp[1][j] = j;
            }
            
            for (int i = 2; i <= m; i++){
                for (int j = 2; j <= n; j++){
                    dp[i][j] = Integer.MAX_VALUE;
                    for(int k = 1; k < j; k++){
                        dp[i][j] = Math.min(dp[i][j],
                                            1 + Math.max(dp[i - 1][k - 1], dp[i][j - k]));
                    }
                }
            }
            return dp[m][n];
        }
    }
  • 相关阅读:
    ES 内存深度解析
    Spring Cache介绍和使用
    mysql 索引及索引创建原则
    mysql中四种存储引擎的区别和选择
    Java中数组、List、Set互相转换
    COGS 1151 活动安排
    洛谷P1650赛马与codevs 2181 田忌赛马
    5月3日济南清北学堂随堂测试题目
    codevs 1206 保留两位小数
    codevs 1203 判断浮点数是否相等
  • 原文地址:https://www.cnblogs.com/jasminemzy/p/7590257.html
Copyright © 2011-2022 走看看