Если у меня есть массив чисел и список сумм, суммирующих элементы массива, то какой наиболее эффективный подход (или, по крайней мере, не грубой взлом) для определения того, какой из элементов включены в сумму?сопоставлять элементы со списком сумм
Упрощенный пример может выглядеть следующим образом:
массива = [6, 5, 7, 8, 6, 12, 16] суммирует = [14, 24, 22]
, и я хотел бы чтобы узнать:
14 включает в себя 8, 6
24 включает в себя 5, 7, 12
22 включает в себя 6, 16
function matchElements(arr, sums) {
var testArr;
function getSumHash() {
var hash = {},
i;
for (i = 0; i < sums.length; i++) {
hash[sums[i]] = [];
}
return hash;
}
sums = getSumHash();
// I don't have a good sense of where to start on what goes here...
return sumHash;
}
var totals = matchElements([6, 5, 7, 8, 6, 12, 16], [14,24,22]),
total;
for (total in totals) {
console.log(total + "includes", totals[total])
}
Я знаю, что всегда будет по крайней мере один правильный ответ, и это только для меня важно, что номера проверить, не нужно спариваться индекс, где есть дубликаты, только поскольку это относится к сумме. Существует ли установленная функция для решения этой проблемы?
Это только javascript-вопрос, потому что это язык, на котором я пишу решение, это скорее общий вопрос, связанный с математикой, который фильтруется через Javascript. Если это не подходящий форум, я приветствую перенаправление на соответствующий сайт обмена стеками.
Хотя я мог использовать «грубую силу», как вы выразились, я не знаю ни одного «быстрого» алгоритма для его достижения. – Xotic750
Да, это то, о чем я думал. Я сказал, что, поскольку я помню какой-то удар в мультфильме xkcd, где он сказал официанту не использовать грубую силу, чтобы рассчитать его наконечник, когда он использовал какой-то подобный вопрос (я думаю), а не лучшая причина хаха ... Все, что могло бы исключить совпадение элементов было бы предпочтительнее, но я бы согласился на грубую силу, я просто надеялся избежать этого. – Shane
http://www.roryhart.net/code/xkcd-np-complete-restaurant-order/ Вот кто-то, кто решил проблему, к сожалению, я ничего не знаю о Minizinc, видимо, это касается проблем моделирования в «Программе ограничения», , Так что это интересно, но не полезно. – Shane