ПРИМЕЧАНИЕ. Я планирую реализовать это с помощью Java, но любое простое английское объяснение шагов, необходимых в логике, приветствуется и оценивается.
Я пытаюсь найти способ разделить группу из 24 музыкальных альбомов/записей на 6 плейлистов, чтобы продолжительность/время работы всех 6 плейлистов были как можно ближе друг к другу.
Сначала я подумал, что, может быть, я смогу найти все возможные перестановки проблемы, а затем выработать логику, которая проанализирует, что является лучшим делением. Я даже создал поток, чтобы попросить о помощи вчера (У меня есть 24 элемента, которые мне нужно разделить на 6 наборов 4. Какой алгоритм я могу использовать для поиска всех возможных комбинаций?). Однако, когда я приблизился к поиску решения, я понял, что просто найти все перестановки проблемы займет очень много времени, чтобы этот подход выглядел непрактичным.
Итак, мне было интересно, есть ли более быстрый способ подойти к такой проблеме?
Учитывая, что это время работы этих альбомов (в формате MM: SS), для меня ли, как быстро, найти разделение альбомов на 6 плейлистов из 4 таких, что длины каждого из плейлистов как можно ближе друг к другу?
39:03
41:08
41:39
42:54
44:31
44:34
44:40
45:55
45:59
47:06
47:20
47:53
49:35
49:57
50:15
51:35
51:50
55:45
58:10
58:11
59:48
59:58
60:00
61:08
Я сделал математику и рассмотрел общее время для всех альбомов, имея 6 плейлистов, которые работают в течение 200 минут и 49 секунд, было бы идеально... но так как отдельные длины альбомов, вероятно, не позволяют этого точно разделение, то, что было бы самым точным возможным делением, - мой вопрос.
ПРИМЕЧАНИЕ. Я мог бы сделать это вручную и получить достаточно близкое приближение, которое было бы достаточно, но мне все еще очень интересно, как это можно сделать с помощью программы.
Спасибо!