На выходе нужно получить многомерный массив, где каждый вложенный массив состоит из цифр, в сумме дающих значение константы

имеется значение константы = 10 и имеется массив значений = [1, 2, 5, 10, 9, 8, 6, 4] нужно упорядочить массив значений так чтобы он не превышал значение константы например значение константы = 10 массив должен упорядочиться в (5 4 1) (10) (9 1) (6 4) (8 2) мне просто дана константа и массив и я не знаю какую функцию либо цикл нужно писать


Ответы (1 шт):

Автор решения: Zhihar

как у вас смог массив отсортироваться в (5 4 1) (10) (9 1) (6 4) (8 2), когда 4 в массиве только одна

ну попробуйте сначала отсортировать массив по возрастанию, а затем набирать суммы от старших и младших элементов двигаясь к центру

или вам надо из массива собрать все варианты сумм, равные константе?

тогда отсортируйте массив и сделайте рекурсивную функцию, которая вычисляет сумму текущего элемента массива с результатом рекурсивной функции от последующих элементов

типа

function mysum(sum, pos, arr, value) {
    // если сумма уже превышает заданное значение - прекращаем поиск на данной глубине рекурсии
    if (sum > value)
        return;

    // ищем суммы на данной глубине рекурсии
    for (index = pos; index < arr.length; index++) {
        new_sum = sum + arr[pos];
        if (new_sum == value) {
            // искомый вариант
        }

        mysum(new_sum, pos + 1, arr, 10);
    }
}

mysum(0, 0, arr, 10)
→ Ссылка