375. 猜数字大小 II(区间dp)

Posted Harris-H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了375. 猜数字大小 II(区间dp)相关的知识,希望对你有一定的参考价值。

375. 猜数字大小 II (区间dp)

d p [ i ] [ j ] dp[i][j] dp[i][j]在范围 [ i , j ] [i,j] [i,j]获胜的最小现金数。

转移方程: d p [ i ] [ j ] = x + m a x ( d p [ i ] [ x − 1 ] , d p [ x + 1 ] [ j ] ) dp[i][j]=x+max(dp[i][x-1],dp[x+1][j]) dp[i][j]=x+max(dp[i][x1],dp[x+1][j])

因为求最小: d p [ i ] [ j ] = m i n ( x + m a x ( d p [ i ] [ x − 1 ] , d p [ x + 1 ] [ j ] ) ) , x ∈ [ i , j ) dp[i][j]=min(x+max(dp[i][x-1],dp[x+1][j])),x\\in[i,j) dp[i][j]=min(x+max(dp[i][x1],dp[x+1][j])),x[i,j)

时间复杂度: O ( n 3 ) O(n^3) O(n3)

class Solution {
public:
    int getMoneyAmount(int n) {
        vector<vector<int>> f(n+1,vector<int>(n+1));
        for (int i = n - 1; i >= 1; i--) {
            for (int j = i + 1; j <= n; j++) {
                int minCost = INT_MAX;
                for (int k = i; k < j; k++) {
                    int cost = k + max(f[i][k - 1], f[k + 1][j]);
                    minCost = min(minCost, cost);
                }
                f[i][j] = minCost;
            }
        }
        return f[1][n];

    }
};

以上是关于375. 猜数字大小 II(区间dp)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 375 猜数字大小II[动态规划] HERODING的LeetCode之路

375 Guess Number Higher or Lower II 猜数字大小 II

(递归记忆化)最好与最坏的选择——375. 猜数字大小 II

C++题解-Leecode 375. 猜数字大小 II——Leecode每日一题系列

LC-375 猜数字大小Ⅱ

java 375.猜数字更高或更低II(#1递归).java