2016-06-16 6 views
0

Ich versuche, einen Algorithmus zu erstellen, bei dem die Methode eine ArrayList einnimmt und die Länge der Ausgabe angegeben wird. Die Aufgabe der Methode besteht darin, alle möglichen Permutationen der Elemente der angegebenen Arraylist zu drucken. Für zB, wenn Arraylist 1,2 und Länge gegeben ist 3, sollte es Ausgang geben als 112.122.121.212Generieren Sie alle Permutationen von ArrayList <String> einer gegebenen Länge

+0

Ich wähle diese Frage als Wegthema zu schließen, weil Stackoverflow kein Schreiben von Code-Service ist. Was ist deine Frage? – Eiko

Antwort

1

Die resultant kann durch rekursives Hinzufügen aller möglichen Zeichen zu einem vorhandenen Ergebnis erstellt werden, bis die gewünschte Länge erreicht ist. Sie beginnen mit einem leeren Ergebnis. Der Algorithmus dafür ist recht einfach:

public static void main(String... arg) { 
    int n = 2; 
    int l = 3; 

    List<String> a = new ArrayList<>(); 
    for (int i = 0; i < n; i++) { 
     a.add(Integer.toString(i+1)); 
    } 
    perm(a, "", l); 
} 

private static void perm(List<String> a, String result, int l) { 
    if (result.length() == l) { 
     System.out.println(result); 
     return; 
    } 
    for (int i = 0; i < a.size(); i++) { 
     String nr = result + a.get(i); 
     perm(a, nr,l); 
    } 
} 

Ausgang:

111 
112 
121 
122 
211 
212 
221 
222 
+0

Wie könnte ich das Ergebnis als {1,1,1}, {1,1,2} usw. erhalten? –

+0

@Selse meinst du eine Liste von Listen? – user1121883

+0

Ich würde eigentlich gerne eine Liste jedes Mal geben –

Verwandte Themen