Функция возвращающая оптимальную суму
Нужно реализовать функцию которая возвращает оптимальный результат. К примеру, есть общая сума 150 и нужно вернуть общую сумму элементов(list) которые максимально приближенны к ней.
Есть функция returnSum которая принимает следующие аргументы: sum - максимальная сума, amount - количество элементов, list - список элементов
const returnSum = (sum, amount, list) => {
// code
return null;
}
returnSum(174, 3, [51, 56, 58, 59, 61]); //173
returnSum(163, 3, [50]); // null
Примерно так должно выглядеть, не могу понять каким образом это реализовать
Ответы (1 шт):
Да делать как и любую задачу на поиска максимума/минимума
задаётся переменная где будет храниться дельта. инициализируем нулём. Ну и например переменную, которая хранит сумму чисел.
идём циклом от начала в конец или от конца в начало, берём по три элемента и суммируем их.
находим дельту от суммы трёх чисел и сравниваемого числа. записываем в переменную, сумму - в переменную с суммой
на следующих итерациях всё так же берём по три числа, находим дельту и сравниваем с дельтой в переменной. Если меньше - то пишем её и сумму в сумму.
остальные проверки уже дело десятое
А в целом, нужно брать по три числа всегда - это единственную проблему, которую тут нужно решить, на мой взгляд.
51, 56, 58, 59, 61:
51, 56, 58
51, 56, 59,
51, 56, 61
51, 58, 59
51, 58, 61
51, 59, 61
56, 58, 59
56, 58, 61
56, 59, 61
58, 59, 61