Ta zmienna x
zawiera liczbę, która musi być przetestowana względem tablicy. var x = 10; var ary = [ 3,5 ]
Sposób dzielenia liczby przez konkretne sumy
chcę przetestować jeśli x
mogą być wykonane przez sumę dowolnej kombinacji klawiszy w ary
, a następnie pokazać, co klucze sumują się do x
.
W tym przypadku nie można użyć 3
. Tak więc wynik będzie = 5, 5
, jeśli x = 10
(ponieważ funkcja powinna przeszukiwać tablicę i stwierdzić, że 5 + 5 równa się 10)
Długość tablicy i x nie są znane. Nie używam żadnych bibliotek. Jest to, jak daleko doszedłem tak daleko:
var x = 10;
var ary = [ 3, 5 ];
function cycle(){
var result;
for(var i = 0; i < ary.length; i++){
if(ary[ i ] + ary[ i ] == x){
result = ary[ i ] + ',' + ary[ i ];
}
else if(ary[ i ] + ary[ i + 1 ] == x){
result = ary[ i ] + ',' + ary[ i + 1 ];
}
else if(ary[ i + 1 ] + ary[ i + 1 ] == x){
result = ary[ i + 1 ] + ',' + ary[ i + 1 ];
}
return result;
}
}
var result = cycle();
document.write(result);
wiem powyższy kod jest straszna, nie elastyczny w najmniejszym stopniu, a działa tylko w tym szczególnym przypadku używam go. W jaki sposób mogę uwzględnić dostępne kombinacje wszystkie?
Zakładając tablica nadal ma tylko wartości 2 3
i 5
, oto więcej przykładów jak co byłoby uzyskać wynik w oparciu o X:
jeśli x = 8
, wynik byłby = 3, 5
;
jeśli x = 15
, wynik byłby = 5, 5, 5
jeśli x = 9
, wynik byłby = 3, 3, 3
itp
Uwaga: Nie powinno być żadnych ograniczeń co do tego, ile razy klucz może być używany.
co jest taki sam indeks dodawane do siebie w 'ary [b] + ary [i] == x'? – guest271314
@ guest271314 Celem było sprawdzenie, czy jakiekolwiek sumy sumują się do x. W tym dodawanie indeksów do siebie, jednak wiele razy, aby uzyskać x. Lub dodanie go do dowolnego innego indeksu plus siebie, aby uzyskać x. –
Partycja algorytmu liczby może Ci pomóc http://stackoverflow.com/questions/400794/generating-the-partitions-of-a-number –