Wahrscheinlich nicht der beste Ansatz, aber es sollte funktionieren.
Bestimmen Anzahl von Kombinationen von drei Zahlen, die Summe bis 8:
1,1,6
1,2,5
1,3,4
2,2,4
2,3,3
Um die oben finde ich mit gestartet:
6,1,1 then subtracted 1 from six and added it to the next column...
5,2,1 then subtracted 1 from second column and added to next column...
5,1,2 then started again at first column...
4,2,2 carry again from second to third
4,1,3 again from first...
3,2,3 second -> third
3,1,4
zu wissen, dass weniger als die Hälfte 2 alle Kombinationen gewesen sein muss gefunden ... aber da die Liste nicht lang ist, können wir genauso gut zum Ende gehen.
Sortieren Sie nun jede Liste von 3 von der größten zur kleinsten (oder umgekehrt) Sortieren Sie nun jede Liste von 3 relativ zueinander. Kopieren Sie jede eindeutige Liste in eine Liste eindeutiger Listen. Wir haben jetzt alle Kombinationen, die zu 8 hinzufügen (fünf Listen, die ich denke).
8 Pick 6, (da wir sechs gepflückt gibt es nur 2 übrig zur Auswahl:
nun eine Liste in der obigen Satz betrachten
6,1,1 alle möglichen Kombinationen werden durch gefunden) 2 pick 1, 1 pick 1 was auf 28 * 2 * 1 = 56 funktioniert, es lohnt sich zu wissen, wie viele Möglichkeiten es gibt, damit man testen kann.
n wählen r
n C r = n (r Elementen aus n insgesamt Optionen wählen)!/[(n-r)! r!]
So, jetzt haben Sie die Gesamtzahl der Iterationen für jede Komponente der Liste für die erste es 28 ...
Nun Kommissionierung 6 Veröffentlichungen von 8 ist die gleiche wie die Erstellung einer Liste von 8 minus 2 Elemente, aber welche zwei Elemente?
Nun, wenn wir 1,2 entfernen, die uns mit 3,4,5,6,7,8 verlässt. Betrachten wir alle Gruppen von 2 ... Beginnend mit 1,2 wäre der nächste Wert 1,3 ... also wird das Folgende Spalte für Spalte gelesen.
12
13 23
14 24 34
15 25 35 45
16 26 36 46 56
17 27 37 47 57 67
18 28 38 48 58 68 78
jeder der oben genannten Spalten Fasst gibt uns 28 (so dies betraf nur die erste Ziffer in der Liste (6,1,1) wiederholen Sie den Vorgang für die zweite Stelle (eine Eins), die „2 Wählen Sie 1 "Also aus der linken über zwei Ziffern aus der obigen Liste wählen wir eine von zwei und dann für die letzte wählen wir die verbleibende.
Ich weiß, das ist kein detaillierter Algorithmus, aber ich hoffe, Sie können
sollte r3 {7, 3} sein? –
In dem Beispiel, das Sie angeben, werden alle Nummern verwendet. Ist das ein Unfall oder wollen Sie immer, dass dies der Fall ist? – aaronasterling
@Vincent @aaron Ich habe ja für beide in meiner Antwort ja angenommen. – marcog