プロが教える店舗&オフィスのセキュリティ対策術

以下の問題教えて欲しいです。よろしくお願いします。
長さ100の棒を、100個の長さ1の断片に切り分ける必要がある。複数の棒の断片を同時に切断できるとすると、切断の最小回数はいくつか?また、長さ n の棒を 長さ1の断片に切り分ける回数はいくつか。アルゴリズムの概要についても説明しなさい。
# 回数なので整数になることに注意

A 回答 (2件)

具体的に考えれば



1回目の切断 → 50 が2本
2回目の切断 → 25 が4本
3回目の切断 → 25 は2等分できないので 12 と 13 に切断
      → 12 が4本、13が4本(合計 8本)
4回目の切断 → 12は2等分、13 は2等分できないので 6 と 7 に切断
      → 6 が12本、7が4本(合計 16本)
5回目の切断 → 6は2等分、7 は2等分できないので 3 と 4 に切断
      → 3 が28本、4が4本(合計 32本)
6回目の切断 → 4は2等分、3 は2等分できないので 1 と 2 に切断
      → 1 が28本、2が36本(合計 64本)
7回目の切断 → 2 のみを切断(1はもう切断不要)
      → 1 が100本

これを、どのようにアルゴリズム化するかですね。
単純に
 2^6 = 64 < 100 < 2^7 = 128
ということだと思いますけどね。

これを「長さ n」に拡張すれば
 2^(x - 1) < n < 2^x
となる「x」を求める、ということになると思います。

「結果」そのものよりも、「どのように考えればよいか」という「戦略の見つけ方」「着眼点」が大事です。
    • good
    • 0
この回答へのお礼

分かりやすく説明ありがとうございます。頑張ってみます!

お礼日時:2020/11/20 14:10

1回切断すると2本になります。


k回の切断で(最大)2^k本の断片に切り分けることが可能になるので、これが目標の個数以上に分けることができる回数が最小回数になるでしょう。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!