tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
2036
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Moin,
    ich steh grad auf der Leitung, hab aber auch nicht ganz den Kopf frei, länger darüber nachzudenken:

    Wie kann ich mir alle möglichen Kombinationen eines Wortes oder einer Zahlenkombination ("73485784" oder auch "waldameise" o.ä.) ausgeben lassen, ohne dabei doppelte Ergebnisse geliefert zu bekommen?
     

  2. #2
    vop vop ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Beiträge
    676
    Hi

    vielleicht hilft Dir dieser Thread (allerdings in PHP) etwas weiter
    http://www.tutorials.de/tutorials221304.html

    Da habe ich mal eine PHP-Lösung gepostet.

    Wenn Du die in java umbastelst, anschließend die Einträge in eine sortierte Stringliste einfügst (und dabei doppelte Einträge überspringst), sollstest Du alles haben, oder?

    Beachte aber: Es gibt eine ganze Menge Kombinationen.
    Vielleicht ist bei längeren Wörtern statt der rekursiven besser eine iterative Lösung zu nehmen.

    vop
     

  3. #3
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.885
    Blog-Einträge
    29
    Hallo!
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    
     package de.tutorials;
     
     public class Permutation {
     
        static int anz = 0;
        static int maxIndex;
        /**
         * @param args
         */
        public static void main(String[] args) {
     
            String s = "123a";
            maxIndex = s.length()-1;
            permut(s.toCharArray(),maxIndex);
            
        }
        
        static void swap(char[] a, int i, int j) {
            char temp = a[i];
            a[i] = a[j];
            a[j] = temp;
        }
        
        static void permut(char[] a, int endIndex) {
            if (endIndex==0){
                print(a);
                anz++;
            }else{
                permut(a, endIndex-1);
                for (int i=0; i<=endIndex-1; i++){
                    swap(a, i, endIndex);
                    permut(a, endIndex-1);
                    swap(a, i, endIndex);
                }
            }
        }
        
        static void print(char[] a) {
            System.out.println(String.valueOf(a));
        }
     }

    gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  4. #4
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Hrhrl, Toms Lösung funktioniert wenigstens - im Gegensatz zu meiner umgebastelten PHP-Geschichte. :o

    Thx.
     

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 16.04.10, 00:00
  2. Antworten: 3
    Letzter Beitrag: 11.03.10, 23:08
  3. Antworten: 0
    Letzter Beitrag: 24.10.07, 21:25
  4. Alle möglichen Zahlen auflisten
    Von stillalive im Forum Coders Talk
    Antworten: 1
    Letzter Beitrag: 27.09.04, 10:41
  5. Antworten: 1
    Letzter Beitrag: 26.05.04, 18:33