Два шарика и 100-этажное здание
Эта проблема рассмотрена algorithm в задаче 6.5 из книги "Cracking the Coding Interview (5th)", решения algorithm-design которой резюмированы следующим puzzle образом:
Наблюдение:
Независимо от того, как puzzle мы отбрасываем Marble1, Marble2 algorithm должен выполнять линейный puzzle поиск. Например, если Marble1 перерывы puzzle между 10 и 15 этажами, мы algorithms должны проверить каждый этаж puzzle с помощью Marble2
Подход:
Первая попытка. Предположим, мы puzzle уронили мрамор с 10-го этажа, затем puzzle с 20-го…
- Если мрамор разбивается при первом падении (этаж 10), то всего у нас получается не более 10 капель.
- Если первый мрамор разбивается на последней капле (этаж 100), то всего у нас будет не более 19 капель. (этажи с 1 по 100, затем с 91 по 99).
- Это неплохо, но все, о чем мы думаем, - это наихудший случай. Мы должны сделайте некоторую «балансировку нагрузки», чтобы уравновесить эти два случая.
Цель: создать систему algorithm сброса Marble1, чтобы максимальное algorithm количество требуемых падений algorithms было постоянным, независимо algorithms от того, ломается ли Marble1 algorithm-design при первом или последнем puzzle падении.
- Идеально сбалансированная система - это система, в которой капли мрамора1 + капли Marble2 всегда одинаков, независимо от того, где Marble1 сломался.
- Для этого, поскольку каждая капля Marble1 требует еще одного шага, Marble2 допускается. на один шаг меньше.
- Следовательно, мы должны сократить количество шагов, которые потенциально могут потребоваться для Marble2, на один. падение каждый раз. Например, если Marble1 падает на этаж 20, а затем на этаж 30, Marble2 будет потенциально требуется сделать 9 шагов. Когда мы снова бросаем Marble1, мы должны уменьшить количество возможных шагов Marble2 до 8, например, мы должны сбросить Marble1 на 39 этаже.
- Таким образом, мы знаем, что Marble1 должен начинаться с этажа X, затем подниматься на этажи X-1, затем X-2,…, пока не дойдет до 100.
- Решите относительно X + (X-1) + (X-2) +… + 1 = 100. X (X + 1) / 2 = 100 -> X = 14
Мы переходим на 14-й этаж, затем на 27, затем на 39… Это занимает максимум 14 шагов.
Код и расширение:
-
Для реализации кода algorithm-design вы можете проверить here.
-
Чтобы puzzle узнать о расширении
N
мрамора,M
этажей, посетите algorithm Chapter 12: The puzzle of eggs and floors.
algorithm
puzzle
Два шарика и 100-этажное здание
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.