思路
k个鸡蛋从N楼层摔,最坏情况下最少要试验x次。
换个说法:
k个鸡蛋试验x次最多可以检测N层楼。
空间复杂度O(k)
时间复杂度O(k*lnN)
代码如下
int solution(int n, int k) {
int bs = log2n(n) + 1;
if (k >= bs) {
return bs;
}
int* dp = new int[k];
for (int i = 0; i < k; i++) {
dp[i] = 0;
}
int r = 0;
while (1) {
r++;
int p = 0;
for (int i = 0; i < k; i++) {
int tmp = dp[i];
dp[i] += (p + 1);
p = tmp;
if (dp[i] > n)
return r;
}
}
}
公式解
k=1 N=x
k=2 N=(x2+x)/2
k=3 N=(x3+5x)/6
k=4 N=(x4-2x3+11x2+14x)/24