問題:有m層的高樓,n個雞蛋,需要扔幾次雞蛋才能確定使雞蛋落地後變碎的最低樓層,雞蛋如果沒碎可以重複使用
int minTimes(int m, int n) {
vector<vector<int>> dp(m + 1, vector<int>(n + 1));
int fk;
for (int j = 1; j <= n; ++j) {
dp[0][j] = 0;
dp[1][j] = 1;
}
for (int i = 1; i <= m; ++i)dp[i][1] = i;
for (int i = 2; i <= m; ++i) {
for (int j = 2; j <= n; ++j) {
dp[i][j] = INT_MAX;
for (int k = 1; k <= i; ++k) {
fk = 1 + max(dp[k - 1][j - 1], dp[i - k][j]); //從第k層樓扔,碎了,不碎
dp[i][j] = min(dp[i][j], fk);
}
}
}
return dp[m][n];
}