運用動態規劃原理,相當於打**。
public
intsupereggdrop
(int k,
int n)
//當樓層為0時,f為0
for(
int i=
0;i1;i++
) dp[0]
[i]=0;
//當雞蛋個數為0時,f=0
for(
int i=
0;i1;i++
) dp[i][0
]=0;
//當乙個雞蛋的時候,f為給的樓層數
for(
int i=
1;i<=n;i++
)//當樓層為1時,其雞蛋為0是f=0,雞蛋大於等於1時f=1;
for(
int i=
1;i<=k;i++
) dp[1]
[i]=1;
//當i=2,j=2時
for(
int i=
2;i<=n;i++
)for
(int j=
2;j<=k;j++
)for
(int k=
1;k<=i;k++
)//當從k層落下的時候,如果雞蛋打碎,則從k-1層考慮,此時雞蛋為j-1
//當從k層落下 的時候,如果雞蛋沒有打碎,則從i-k層考慮,此時雞蛋為j
//找到這兩種情況的最大值,與原來的進行比較,找其最小值
//因為在k層已經做了一次實驗,則實驗次數要加1
dp[i]
[j]=math.
min(dp[i]
[j],math.
max(dp[k-1]
[j-1
],dp[i-k]
[j])+1
);//優化
//當i=2,j=2時
for(
int i=
2;i<=n;i++
)for
(int j=
2;j<=k;j++
)//找到乙個k使得dp[i-k][j]與dp[k-i][j-1]中的最大值
dp[i]
[j]=math.
min(dp[i]
[j],math.
max(dp[left-1]
[j-1
],dp[i-left]
[j])+1
);}return dp[n]
[k];
}
雞蛋掉落問題
leetcode 887.雞蛋掉落 include include using namespace std intsupereggdropbs int k,int n 這一段改用二分查詢,而不從1列舉到i int start 1,end i,mid int res int max 可能存在找不到的情...
Daily Practice 雞蛋掉落問題
示例 1 輸入 k 1,n 2 輸出 2解釋 雞蛋從 1 樓掉落。如果它碎了,我們肯定知道 f 0 否則,雞蛋從 2 樓掉落。如果它碎了,我們肯定知道 f 1 如果它沒碎,那麼我們肯定知道 f 2 因此,在最壞的情況下我們需要移動 2 次以確定 f 是多少。示例 2 輸入 k 2,n 6輸出 3示例...
雞蛋掉落問題 動態規劃
leetcode第887題雞蛋掉落 題目描述 思路1 這個題的問題是 如何在最小的移動次數內確定雞蛋可以掉碎的最低樓層?很明顯這是乙個最優化問題,也就是求f k,n 的最小值。既然時求最優解,我們就可以考慮使用動態規劃的方法來解。將情況分為以下幾種 1 樓層數為0或者雞蛋數為0,那最少的移動次數就是...