All pastes #281400 Raw Edit

Someone

public java v1 · immutable
#281400 ·published 2006-12-16 19:40 UTC
rendered paste body
class Permutation {    // Methode zur Berechnung der Fakultaet  static int fak(int n) {    int result = 1;    for (int i = 1; i <= n; i++)      result *= i;    return result;  }    static String[] permute(String str) {    int len = str.length();        // Basisfall    if (len == 1) return new String[] { str };    /* Eine Ueberlegung zur Verkuerzung der Laufzeit (anstelle der obigen Zeile):     * if (len == 2) return new String[] { str, "" + str.charAt(1) + str.charAt(0) };     * Dies erspart Methodenaufrufe, da pro Aufruf ein zweielementiges Array     * anstelle eines einelementigen Arrays zurueckgegeben wird.     * Beispiel: Permutation eines Strings aus 9 Zeichen:     * Fall 1 if (len == 1)...: 623530 Methodenaufrufe     * Fall 2 if (len == 2)...: 260650 Methodenaufrufe    */    // Rekursionsfall    String[] result = new String[fak(len)];    int k = 0;    for (int i = 0; i < len; i++) {      String help = str.substring(0, i) + str.substring(i+1);      // Hier findet die Rekursion statt.      // Durch die Verwendung eines Hilfsarrays (permhelp), werden in der      // folgenden for-Schleife sehr viele unnoetige Methodenaufrufe gespart.      String[] permhelp = permute(help);      for (int j = 0; j < fak(len-1); j++) {        result[k] = str.charAt(i) + permhelp[j];         k++;      }    }    return result;  }        public static void main(String[] args) {    if (args.length != 1)      System.out.println("Bitte eine Zeichenreihe als Parameter eingeben.");    else {      for (String s: permute(args[0]))        System.out.print(s + " ");      System.out.println();    }  }}