class Solution {
public:
int getMoneyAmount(int n) {
const int tableSize = n;
int table[tableSize][tableSize];
for (int i = n - 1; i >= 0; i--) {
for (int j = i; j < n; j++) {
if (j == i + 1) {
table[i][j] = i + 1;
} else if (i == j) {
table[i][j] = 0;
} else {
int k = i + 1, result = INT_MAX;
while (k < j) {
result = min(result, k + 1 + max(table[i][k - 1], table[k + 1][j]));
k++;
}
table[i][j] = result;
}
}
}
return table[0][n - 1];
}
};建个表,table[i][j]表示从范围[i,j]的结果,最坏的情况是每次都被分到较差的分支,但是也要选所有可能得到分支的最好结果。
leetcode 375. Guess Number Higher or Lower II
最新推荐文章于 2024-10-21 14:58:17 发布
本文介绍了一种使用动态规划解决猜数字游戏的方法。通过构建一个二维表格,记录不同区间内的最优解来逐步推导出整个问题的解。算法的目标是在最坏的情况下找到最小的花费金额。
728

被折叠的 条评论
为什么被折叠?



