[leetcode]375 Guess Number Higher or Lower II (Medium)

it2025-11-11  9

原题

思路: miniMax+DP dp[i][j]保存在i到j范围内,猜中这个数字需要花费的最少 money。 “至少需要的花费”,就要我们 “做最坏的打算,尽最大的努力”,即取最大值。

dp[beg][end] =MIN ( i + max(helper(beg, i - 1, dp), helper(i + 1, end, dp)) ) class Solution { public: int helper(int beg, int end, vector<vector<int>> &dp) { if (beg >= end) { return 0; } if (dp[beg][end] != 0) { return dp[beg][end]; } int minPrice = 99999; int temp = 0; for (int i = beg; i <= end; i++) { temp = i + max(helper(beg, i - 1, dp), helper(i + 1, end, dp)); if (temp < minPrice) { minPrice = temp; } } return dp[beg][end] = minPrice; } int getMoneyAmount(int n) { vector<vector<int>> dp(n + 1, vector<int>(n + 1, 0)); return helper(1, n, dp); } };

转载于:https://www.cnblogs.com/ruoh3kou/p/9893415.html

最新回复(0)