1. Находишь сумму всех чисел, и делишь на 8, получаешь целевое значение, обозначим его О
2. Идя с начала исходного массива заполняешь числами первый массив результата до тех пор, пока добавление следующего числа не даст сумму массива, большую, чем О
3. Повторяешь предыдущий шаг для остальных семи массивов.
4. Если в исходном массиве остались числа - добавляешь их по одному к выходным массивам, начиная с первого.
5. (Тут для удобства можно отсортировать результирующие массивы)
6. Выбираешь два массива - один с самым большим превышением О, другой с самой большой недостачей до О.
7. В первом (из этих двух) массиве выбираешь максимальное число, меньшее, чем превышение, и переносишь его во второй из этих двух массивов.
8. Повторяешь шаги 6 и 7 до тех пор, пока не окажется, что нет числа для переноса.
9. Конец.
Думаю, должно сработать.