美文网首页
LeetCode 第887题:鸡蛋掉落

LeetCode 第887题:鸡蛋掉落

作者: 放开那个BUG | 来源:发表于2020-11-29 19:55 被阅读0次

    1、前言

    题目描述

    2、思路

    这道题使用动态规划来解决,但是我怎么觉得解决的方式像递归。然后这个代码是超时了的,但是这个比较好理解。

    3、代码

    class Solution {
        
        private int[][] map;
    
        public int superEggDrop(int K, int N) {
            map = new int[K + 1][N + 1];
            for(int i = 0; i <= K; i++){
                for(int j = 0; j <= N; j++){
                    map[i][j] = -1;
                }
            }
            return dp(K, N);
        }
    
        private int dp(int K, int N){
            // base case
            // 如果楼层 N 为0,不需要扔鸡蛋,因此 K 为0;
            // 如果鸡蛋 K 为1,则需要线性扫描所有楼层 N
            if(K == 1){
                return N;
            }
            if(N == 0){
                return 0;
            }
            
            if(map[K][N] != -1){
                return map[K][N];
            }
    
            int res = Integer.MAX_VALUE;
            for(int i = 1; i <= N; i++){
                res = Math.min(res, 
                    Math.max(
                        dp(K - 1, i - 1), // 碎了
                        dp(K, N - i) // 没碎
                    ) + 1);
            }
            map[K][N] = res;
            return res;
        }
    }
    

    相关文章

      网友评论

          本文标题:LeetCode 第887题:鸡蛋掉落

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