Это называется Проблема упаковки в бункер и является NP-трудной, поэтому не существует простого алгоритма для ее решения.
Решение, которое я нашел, работало лучше всего (я запустил соревнование по программированию с вопросом, почти идентичным этому), состояло в том, чтобы упорядочить папки по размеру и поместить самую большую папку, которая все еще помещается на диск, пока он не заполнится или все оставшиеся папки слишком велики, чтобы поместиться в оставшееся пространство.
Это быстро решает проблему, так как после сортировки остальная часть алгоритма - O (n).
В конкурсе, в котором я участвовал, это привело к 74 дискам вместо 79, которые наивное решение могло бы достичь для нашего самого большого набора тестовых данных.