0

繰り返しの設定方法が完全に混乱しているという質問があります。

時計メーカーは、耐水性の整数値が 0 から n の範囲内にあるかどうかを調べます。時計が水漏れした場合の耐水性は 0 であり、時計は水深 n メートルでは水漏れしません。耐水性はnで定義されます。

深さ k での耐水性をテストするために、スキューバ ダイバーは k メートルで潜水し、その深さで 1 時間水中に留まります。漏れた時計は廃棄されます。漏れなければ、別の実験で再利用できます。

最悪の場合、何本の時計が漏れますか? (ここでの最悪の場合は、破損した時計の最大数を意味します)?

与えられたもの: 最悪の状況を説明し、破損した時計の数の回帰関係を与えてください。下から上への行のサブ問題の中間点が次の式によって選択されると仮定しmid = floor[(lower+upper)/2] where lower = 1, and upper = n ます。最初のサブ問題の場合。

だから私がこれから得たのはmid = floor[(1+n)/2] 、nの任意の値に当てはまる繰り返しを思いつく方法がわかりません.

誰かが何をすべきか/どのように始めればよいか教えてもらえますか? 誰からの助けにも感謝します。

みんなありがとう。

4

1 に答える 1

1

漏れた時計の総数を最小限に抑えたい場合は、1 つです。時計がリークするまで、k = 0、k = 1 などで順番にテストできます。この場合のテスト数の複雑さは O(m) で、m は時計の耐水性です。

テストの総数を最小限に抑えたい場合、IMO は二分探索問題です。時計が漏れる最小の k を探しています。

中間地点からスタート。

時計が漏れる場合、その抵抗は中間点よりも小さくなります。

Hence new mid-point = (lower + mid-point)/2.

漏れがない場合、その抵抗は中間点よりも大きくなります。

Hence new mid-point = (mid-point + upper)/2.

最悪の場合、テストしたすべての時計がリークします。これは であるアルゴリズムの複雑さですO(logn)

リークできる監視の最大数または実行できる試行の最大数に制約がある場合は、適切な動的プログラミングの定式化について @Dukeling が示すリンクをたどる必要があります。

于 2013-11-12T07:48:02.817 に答える