卵を落とすパズル
覚えておくべき重要なポイントがいくつかあります-
- 卵が特定の階から壊れない場合、それは下の階でも壊れません。
- 特定の階から卵が割れる場合、上層階すべてで卵が割れる。
- 卵が壊れたときは廃棄する必要があります。そうしないと、再び使用できます。
入力と出力
Input: The number of eggs and the maximum floor. Say the number of eggs are 4 and the maximum floor is 10. Output: Enter number of eggs: 4 Enter max Floor: 10 Minimum number of trials: 4
アルゴリズム
eggTrialCount(eggs, floors)
入力: 卵の数、最大フロア。
出力- 最小回数の試行を取得します。
Begin define matrix of size [eggs+1, floors+1] for i:= 1 to eggs, do minTrial[i, 1] := 1 minTrial[i, 0] := 0 done for j := 1 to floors, do minTrial[1, j] := j done for i := 2 to eggs, do for j := 2 to floors, do minTrial[i, j] := ∞ for k := 1 to j, do res := 1 + max of minTrial[i-1, k-1] and minTrial[i, j-k] if res < minTrial[i, j], then minTrial[i,j] := res done done done return minTrial[eggs, floors] End
例
#include<iostream>
using namespace std;
int max(int a, int b) {
return (a > b)? a: b;
}
int eggTrialCount(int eggs, int floors) { //minimum trials for worst case
int minTrial[eggs+1][floors+1]; //to store minimum trials for ith egg and jth floor
int res;
for (int i = 1; i <= eggs; i++) { //one trial to check from first floor, and no trial for 0th floor
minTrial[i][1] = 1;
minTrial[i][0] = 0;
}
for (int j = 1; j <= floors; j++) //when egg is 1, we need 1 trials for each floor
minTrial[1][j] = j;
for (int i = 2; i <= eggs; i++) { //for 2 or more than 2 eggs
for (int j = 2; j <= floors; j++) { //for second or more than second floor
minTrial[i][j] = INT_MAX;
for (int k = 1; k <= j; k++) {
res = 1 + max(minTrial[i-1][k-1], minTrial[i][j-k]);
if (res < minTrial[i][j])
minTrial[i][j] = res;
}
}
}
return minTrial[eggs][floors]; //number of trials for asked egg and floor
}
int main () {
int egg, maxFloor;
cout << "Enter number of eggs: "; cin >> egg;
cout << "Enter max Floor: "; cin >> maxFloor;
cout << "Minimum number of trials: " << eggTrialCount(egg, maxFloor);
} 出力
Enter number of eggs: 4 Enter max Floor: 10 Minimum number of trials: 4
-
卵を落とすパズルのためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 40階建ての建物のどの階から卵を落とすのが安全で、どれが卵の助けを借りて着陸時に卵を損傷させるのかを知りたいとします。ストーリーを確認するには、最小数のトレイルを表示する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # dynamic programming INT_MAX = 32767 # to get minimum trials def eggDrop(n, k): # intialization eggFloor
-
SQLServerのFLOOR関数
この記事では、SQL ServerでFLOOR()数値処理関数を使用する方法と、関数をより適切に視覚化およびキャプチャするための特定の構文と例を詳しく説明します。 説明 FLOOR関数 SQL Serverでは、下限の境界が返されます 数値または式の値。つまり、最大の整数値を返しますが、送信された数式以下です。 構文 SQL ServerでFLOOR関数を使用するには、次の構文を使用します。 FLOOR(number) パラメータ : 番号: 最大の整数値を見つけるために渡される数値。 注 : その他のCEILINGおよびROUND関数を参照してください。 FLOOR関数は、S