Алгоритм C для проблем с разделами

Дан набор целых чисел S:

Как можно разделить множество на k частей так, чтобы сумма каждой части была минимальной? Пожалуйста, дайте также C реализация.

Пример:

S = {1, 2, 3, 4, 5, 6} and k = 3

Раздел

 S1 = {1, 6}
 S2 = {2, 5}
 S3 = {3, 4}

обладает свойством, что сумма каждого разбиения минимальна.

1 ответ

Решение

Эта страница довольно хорошо описывает проблему и даже предоставляет псевдокод для алгоритма:

http://www8.cs.umu.se/kurser/TDBAfl/VT06/algorithms/BOOK/BOOK2/NODE45.HTM

Определите min, max в данном списке и сформируйте пару. Повторяйте, пока список не будет исчерпан.

Интуитивно кажется, что это обеспечит желаемый результат, но не уверен, хотя!

Другие вопросы по тегам