Das ist mehr ein Puzzle als alles andere. Ich habe tatsächlich eine Lösung gefunden, aber es ist so langsam, dass ich dachte, ich hätte meine Internetverbindung verloren (siehe unten).
Nehmen wir an, ich habe ein Array von Zahlen, so:
%Vor%Lassen Sie uns auch sagen, dass ich eine Nummer einige Zahlen habe, in Variablen wie folgt gespeichert:
%Vor% Ich versuche, eine Funktion zu erstellen, die true zurückgibt, wenn eine der Zahlen in $numbers_array
addiert werden kann (jeweils nur einmal verwendet), um die Summen zu bilden:
Das obige sollte ausgeben:
%Vor%Weil 7 + 8 = 15, 7 + 8 + 9 = 24, aber keine Kombination von 1-9 kann 200 erzeugen.
Hier ist meine EXTREM langsame Lösung:
%Vor%Wie immer wird Hilfe geschätzt !!
Ihr Problem ist in der Tat ein algorithmisches Standardproblem (wie Jon das Rucksackproblem erwähnte), genauer gesagt das Teilmengenproblem . Es kann in polynomieller Zeit gelöst werden (siehe Wiki-Seite ).
Pseudocode:
%Vor%