Сложная домашняя задача. По сути, это версия оптимизации с 3 разделами.
http://en.wikipedia.org/wiki/3-partition_problem
Он тесно связан с упаковкой, разделением и суммой подмножества (и, как вы заметили, ранцем). Тем не менее, он оказывается сильно NP-Complete, что делает его сложнее, чем его кузены. В любом случае, я предлагаю вам начать с рассмотрения динамических программных решений связанных проблем (я бы начал с раздела, но нашел бы объяснение решения DP, не относящееся к Википедии).
Обновление: извиняюсь. Я ввел вас в заблуждение. Задача с 3 разделами разбивает входные данные на наборы из 3, а не 3 наборов. Остальная часть того, что я сказал, все еще применима, но с новой надеждой, что ваш вариант не является полностью np-полным.