扔鸡蛋问题
表示i次操作j个鸡蛋最高能测到多少层楼
,因为只能操作一次的话,只能假定1楼碎。
本层楼的高度
如果鸡蛋没有碎,那么对应的是 ,也就是说在这一层的上方可以有 层;
如果鸡蛋碎了,那么对应的是 ,也就是说在这一层的下方可以有层。
class Solution {
public:
int superEggDrop(int k, int n) {
if (n == 1) {
return 1;
}
vector<vector<int>> f(n + 1, vector<int>(k + 1));
for (int i = 1; i <= k; ++i) {
f[1][i] = 1;
}
int ans = -1;
for (int i = 2; i <= n; ++i) {
for (int j = 1; j <= k; ++j) {
f[i][j] = 1 + f[i - 1][j - 1] + f[i - 1][j];
}
if (f[i][k] >= n) {
ans = i;
break;
}
}
return ans;
}
};
算法竞赛之路 文章被收录于专栏
整理、记录算法竞赛的好题