@21ken

Как минимально поделить число на 2 и 3 столько раз сколько будет нужно?

Представьте что существует гостиница с комнатами на двух и трех человек. На входе дается число - сколько людей заселяется, а на выходе нужно указать какое минимальное количество комнат они смогут занять.
Например, на пять человек - 2 комнаты(2 мест и 3 мест), на 6 человек - 2 комнаты по 3 места, на 7 тоже 3(2 комнаты по 2 места и 1 по 3-х местка) и так далее. Количество людей может быть любым, хоть 20, хоть 30.
Как написать такой алгоритм?
  • Вопрос задан
  • 107 просмотров
Решения вопроса 2
21ken, добрый день!
Есть хорошая книга "Грокаем алгоритмы", в неё рассматривается похожая задача про Рюкзак.
Ответ написан
Комментировать
@AbramovKS
Если комнат бесконечное количество)
Делим кол-во людей на вместительность самой большой комнаты.
Например 8 людей / 3 мест. = 2, остаток 2 чел
Остаток делим на 2 местные и повторяем пока не вселим всех.

На вскидку в псевдокоде

humans = 8
capacity = 3 #вместительность самой большой комнаты

while(humans>0){
ok = Math.trunc(humans/capacity) #вселили количество
humans -= ok * capacity #осталось вселить
capacity -= 1 #уменьшаем вместительность комнат и повторяем

if(ok==0){
humans = 0 #если все вошли в одну комнату без остатка например 2 в 3 мест.
}

}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы