關於雞蛋掉落問題

2021-10-23 06:16:51 字數 1270 閱讀 6071

運用動態規劃原理,相當於打**。

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,那最少的移動次數就是...