Алгоритм распределения элементов
Недавно был задан такой вопрос.
Вот собственно его текст:
Есть задача: У вас есть несколько камней известного веса. Напишите программу, которая распределит камни в две кучи так, что разность весов этих двух куч будет минимальной. Даже не представляю, как решить. Не подскажете, как это можно сделать? Мне не нужен код, нужен алгоритм. Спасибо!
Я даже сам на него дал ответ. Но потом другой участник, написал, что этот алгоритм не верен.
Ваш алгоритм (8, 7, 5, 5, 5) разделит на (8, 5), (7, 5, 5). А правильный ответ (8, 7), (5, 5, 5)
И действительно. Так вот, теперь я спрашиваю, как изменить алгоритм, что бы он работал и в этом случае?
Вот мой ответ:
Постоянно добавляем в меньшую по весу кучу самый тяжелый камень. Вот собственно и есть весь алгоритм.
P.S. Это читал, там нет ответа на мой вопрос
P.P.S Задал этот вопрос, так автор вопроса выше не изменил вопрос.
P.P.P.S Пусть веса целые и до 100,000
Ответы (1 шт):
Ну, как я и писал, в книге Кормена эта задача разобрана, признана NP-полной, и вот описание точного алгоритма ее решения. Кто хочет — может взять книгу и почитать дальше, там приведен полиномиальный приближенный алгоритм.
Простого (a la жадного) решения не будет.


