šŸŒ•šŸŒ— 375. ēŒœę•°å­—大小 II

吞佛ē«„子2022幓10꜈10ę—„
  • algorithm
  • dp
大ēŗ¦ 1 分钟

šŸŒ•šŸŒ— 375. ēŒœę•°å­—大小 II

难åŗ¦: šŸŒ•šŸŒ—

é—®é¢˜ęčæ°

img_9.png


č§£ę³•

class Solution {
    public int getMoneyAmount(int n) {
        // ꀝč·Æļ¼š
        // dp[i][j] = max(dp[i][k], dp[k + 1][j]) å–ę‰€ęœ‰ k ęƒ…å†µäø‹ēš„ min
        int[][] dp = new int[n + 1][n + 1];
        for(int i = 0; i <= n; i ++) {
            Arrays.fill(dp[i], -1);
        }
        // dp
        for(int i = n; i >= 0; i --) { // i == 0 ę—¶ dp[0][j] === 0 ę²”ęœ‰ä»»ä½•čæ‡ē؋会ē”Øåˆ°å› ę­¤å€¼äøŗä»»ä½•å€¼å‡ę— å½±å“
            for(int j = i; j <= n; j ++) {
                if(i == j) {
                    dp[i][j] = 0;
                } else if(i == j - 1) {
                    dp[i][j] = i; // ēŒœč¾ƒå¤§ēš„ę•°ļ¼ŒēŒœäø­äøč¾“é’±ļ¼Œäøäø­éœ€č¦ä»˜č¾ƒå°ę•°åƹåŗ”ēš„前
                } else {
                    // č‡³å°‘ 3 äøŖ值
                    // å‡č®¾å½“å‰é€‰äø­ kļ¼Œč‹„ꞁē«Æęƒ…å†µäø‹ k ę²”ęœ‰ēŒœäø­ļ¼Œęøøęˆä¼šå‘ŠēŸ„往å“ŖäøŖę–¹å‘čµ°ļ¼Œå› ę­¤éœ€č¦ē”®äæäøč®ŗå“ŖäøŖę–¹å‘ęœ¬é‡‘ä»č¶³å¤Ÿ
                    for(int k = i; k <= j; k ++) {
                        int tmp = k; // åˆå§‹ęƒ…å†µäø‹éœ€č¦ä»˜å‡ŗēŒœäøäø­ēš„代价
                        if(k > i) {
                            tmp += dp[i][k - 1];
                        }
                        if(k + 1 <= j) {
                            // åˆ¤ę–­ę˜Æå¦åŒę ·äøŗ k > i
                            if(k > i && dp[i][k - 1] < dp[k + 1][j]) {
                                tmp = tmp - dp[i][k - 1] + dp[k + 1][j]; // äæē•™å³čŠ‚ē‚¹
                            } else if(k <= i) {
                                tmp += dp[k + 1][j];
                            }
                        }
                        if(dp[i][j] == -1) {
                            dp[i][j] = tmp;
                        } else {
                            dp[i][j] = Math.min(dp[i][j], tmp);
                        }
                    }
                }
                // System.out.println(i + ":" + j + "  " + dp[i][j]);
            }
        }
        return dp[1][n];
    }
}

č¾“å‡ŗ

img_8.png

äøŠę¬”ē¼–č¾‘äŗŽ: 2022/10/10 äø‹åˆ8:43:48
č“”ēŒ®č€…: liuxianzhishou