На выходе нужно получить многомерный массив, где каждый вложенный массив состоит из цифр, в сумме дающих значение константы
имеется значение константы = 10 и имеется массив значений = [1, 2, 5, 10, 9, 8, 6, 4] нужно упорядочить массив значений так чтобы он не превышал значение константы например значение константы = 10 массив должен упорядочиться в (5 4 1) (10) (9 1) (6 4) (8 2) мне просто дана константа и массив и я не знаю какую функцию либо цикл нужно писать
Ответы (1 шт):
как у вас смог массив отсортироваться в (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)