2016-01-13 5 views
-3

Пример:Комбинация чисел в массиве, которые сумма равна п

var a = [1,2,3,4,5,6]; 

Я хочу, чтобы отобразить все уникальные 3 комбинаций чисел в массиве, где сумма этих 3-х цифр равно 9 (или п).

Так в результате этого примера будет:

[1,2,6] 
[2,3,4] 
[1,3,5] 

Ближайший вещь, которую я смог найти перестановки строки ...

var alphabet = "abcde"; // shortened to save time 

function permute(text) { 
if(text.length === 3) { // if length is 3, combination is valid; alert 
    console.log(text); // or alert 
} else { 
    var newalphabet = alphabet.split("").filter(function(v) { 
     return text.indexOf(v) === -1; 
    }); // construct a new alphabet of characters that are not used yet 
     // because each letter may only occur once in each combination 

    for(var i = 0; i < newalphabet.length; i++) { 
     permute(text + newalphabet[i]); // call permute with current text + new 
             // letter from filtered alphabet 
    } 
    } 
} 

permute(""); 
+0

Я на самом деле не кодер, просто рубил на вещи других людей. Самое близкое, что я мог найти, это перестановки строки, добавленные выше. –

ответ

0

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

var a = [1,2,3,4,5,6]; 
 

 
var result = []; 
 

 
for (var i = 0; i < a.length-2; i++) { 
 
    for (var j = i+1; j< a.length-1;j++) { 
 
    for (var k = j+1; k < a.length;k++) { 
 
     if(a[i]+a[j]+a[k] == 9) { 
 
     result.push([a[i],a[j], a[k]]); 
 
     } 
 
    } 
 
    } 
 
} 
 

 
console.log(result);

Смежные вопросы