两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事。有座100层的建筑,要你用这两个鸡蛋通过最少的次数确定哪一层是鸡蛋可以安全落下的最高位置。可以摔碎两个鸡蛋。
int fun(int n)
{
int *buf = new int[n+1];
buf[0] = 0;
buf[1] = 1;
for (int i = 2; i <= n; i++)
{
buf[i] = i;
for (int j = 1; j <= i; j++)
{
int temp = j-1 > buf[i-j] ? j-1 : buf[i-j];
if (1+temp < buf[i])
{
buf[i] = 1+temp;
}
}
}
int result = buf[n];
delete []buf;
return result;
}