Probleme mit der realen Lebensdauer können in ein solches Datenmodell abstrahiert werden:
Wählen Sie mehrere Zahlen aus einem Array aus und lassen Sie die Summe dieser Zahlen der angegebene Wert sein.
Die meisten Leser hätten Online -Einkaufserfahrungen haben sollen. Online-Shopping hat im Allgemeinen eine Bestellfunktion. Wenn der Leser ein Produkt im Wert von 70 Yuan kauft, aber über 100 Yuan sein muss, um kostenlosen Versand zu versenden, empfiehlt das System automatisch einige Produkte, die bis zu 100 Yuan addieren.
Wie bestimmt das System, welche Produkte zu empfehlen sollen? Dies ist eigentlich das gerade erwähnte Modell. Wir können die Preise für heiße Verkaufsprodukte in ein Array einfügen und dann den Algorithmus verwenden, um herauszufinden, welche Preissummen im Array 30 Yuan sind.
Xiaocai weniger Unsinn und wird Ihnen eine JavaScript -Version der Algorithmus -Implementierung mit Ihnen teilen.
Algorithmuscode:
Funktion getCombbysum (Array, Summe, Toleranz, TargetCount) {var util = {/*Kombination aus Arrayarr: Zielarraynum: Kombination Element Langzeit: Ein Array, das Kombination Arrays enthält*/getcombination: Funktion (arr, num) {var r = []; i = 0, l = A.Length; i <= ln; 0; i <array.length; i ++) {r.push (i);} return r;}}, logic = {// Sortieren Sie das Array, dann müssen wir, was wir brauchen: function (array, sum) {// clone arrayvar _array = array.concat () (), r = [], i = 0; B;}); // Erhalten Sie alle Zahl, wenn es weniger als oder gleich sumfor ist (i = 0; i <_array.length; i ++) {if (_array [i] <= sum) {r.push (_array [i]);} else {break;}} reta r;}}}, // Wichtige Funktionsfunktion, {functioncore (arkore) (reibungsarray, sum, sum, sum, sum, score, sum, score, sum, score, sum, score, sum, sum, ca. 0, combarrray = [], _ sum = 0, _cca = [], _ cache = []; if (count == _returnmark) {return;} // aktuelle count combination combarray = util.getCombination (arrayIndex, count); für (i = 0; i <combarray.length; i ++) {{{_cache {{_cache {_cache) {{{{_cache {{_cache) {{{{_cache {{_cache) {{{{{_cache) {{{{_cache {_cache {{_cache) {oder = []; // Berechnen Sie die Summe aus Kombination (k = 0; k <_cca.length; k ++) {_ sum+= array [_cca [k]]; _ cache.push (Array [_cca [k]]; } logic.core (Array, sum, arrayIndex, count-1, r);}}, r = [], _ array = [], _ targetCount = 0, _tolerance = 0, _returnmark = 0; // prüfen data_targetCount = targetCount || _targetCount; _toleranz = Toleranz || _toleranz; _array = logic.init (Array, sum); if (_targetCount) {_ returnmark = _targetCount-1;} logic.core (_array, sum, util.getarrayIndex (_array), (_ targetCount || _array.Length), R);Anrufanweisungen:
Array: Datenquellarray. Erforderlich.
Summe: Summe der Summe. Erforderlich.
Toleranz: Toleranz. Wenn dieser Parameter nicht angegeben ist, muss die Summe der Summe gleich dem Summenparameter sein. Wenn das Angeben dieses Parameters in dem Toleranzbereich fährt. Optional.
TargetCount: Anzahl der Operanden. Wenn dieser Parameter nicht angegeben ist, enthält das Ergebnis alle möglichen Fälle. Wenn Sie diesen Parameter angeben, können Sie eine feste Anzahl von Zahlen herausfiltern und hinzufügen. Wenn das Ergebnis als 3 angegeben ist, enthält das Ergebnis nur drei Zahlen. Optional.
Rückgabewert: Die zurückgegebene Array -Struktur ist ein Array, die Elemente im inneren Array sind Operanden, und die Elemente im äußeren Array sind alles mögliche Ergebnisse.