Kombinatorik: Generiere alle "Staaten" - array-Kombinationen
Ich habe ein array von Integer-zahlen: n[]
.
Auch, ich habe ein array (Nr[]
) enthält n.length
zahlen. Ich brauche generieren, die alle Kombinationen von n[]
in folgender Weise:
/* let n.length == 3 and Nr[0] = 2, Nr[1] = 3, Nr[2] = 3 */
n = {0, 0, 0};
n = {1, 0, 0};
n = {2, 0, 0};
n = {0, 1, 0};
n = {0, 2, 0};
n = {0, 3, 0};
n = {0, 0, 1};
...
n = {1, 1, 0};
n = {1, 2, 0};
n = {1, 3, 0};
n = {2, 1, 0};
n = {2, 2, 0};
n = {2, 3, 0};
n = {1, 1, 1};
...
n = {0, 1, 1};
//many others
Das Ziel ist, finden alle Kombinationen von n
, wo n[i]
werden kann 0 to Nr[i]
.
War ich nicht erfolgreich... Wie es zu lösen in Java? Oder nicht in Java...
wo sind die codes? und welche Zeile hast du problem?
Das problem war viel größer, ich hatte keine guten Ideen(die
Das problem war viel größer, ich hatte keine guten Ideen(die
InformationsquelleAutor ivkremer | 2012-03-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möchten Sie vielleicht die Verwendung Rekursion, versuchen, alle Möglichkeiten für jeden index, und rekursiv aufrufen, mit der subarray, "ohne" das Letzte element ist.
aufrufen mit:
erhalten Sie:
Beachten Sie jedoch, dass mit dieser Methode druckt alle Elemente, wie Sie beschreibt, aber in einer anderen Reihenfolge dann Ihrem Beispiel.
ausgezeichnete Antwort, aber wie kann man diese anpassen zu Kombinationen?
Meinst du etwas ähnliches wie das, was abgedeckt in diesen thread [das ist php und nicht java, aber habe ich eine pseudo-code, der offensichtlich in java implementiert]? Oder sind Sie auf der Suche nach alle Permutationen?
alle Kombinationen, in der Tat! versucht, diese auf Java (nur zu lernen, und ich bin so so bei Rekursion) alle morgen. Versuche zur Verwendung von Arrays.copyOfRange und was nicht ohne Erfolg (S. s.: Ich bin kein computer / Mathematik-student). Vielen Dank für die Beantwortung so schnell zugeben, ich dachte, ich würde nicht eine Antwort erhalten, wird dieser thread ein paar Monate alt
Ich hoffe, der verlinkte thread hilft dir. Versuchen Sie, bei der Umsetzung dieser Ideen, und wenn Sie irgendwelche Probleme - Fragen Sie Ihre eigene Frage, mit Ihrem spezifischen code und eine Beschreibung des Problems - denken Sie daran, dass die Fragen mit code (noch nicht), werden wahrscheinlich viel besser Antworten!
InformationsquelleAutor amit
Hinweis: im Gegensatz zu der Frage der Logik, der folgende code ist Ober-exklusiv, das ist der standard in Java, z.B. Eingabe von
3
zählen von 0 bis 2 (jeweils einschließlich), nicht 0 bis 3.Diese kann getan werden, ohne die Rekursion so:
Test
Ausgabe
Als eine übung in Java 8 streams, hier ist eine Klasse für Durchlaufen oder streaming der Permutationen.
Wie zu verwenden:
Alle drei produzieren die gleiche Ausgabe wie oben.
Hier ist der code:
InformationsquelleAutor Andreas