Java-Algorithmus



  • Hallo

    Ich brauche einen Algorithmus für eine bestimmte Aufgabe. Ich versuche mich mal verständlich auszudrücken:

    Ich habe eine HashMap, welche eine beliebige Anzahl an Vectoren enthält. Jeder dieser Vectoren enthält mindestens ein Objekt mit einem Wert, jedoch enthält nicht jeder die gleiche Menge an Werten. Jetzt möchte ich alle möglichkeiten in eine Datei schreiben. Zum besseren Verständnis noch ein Beispiel:

    HashMap enthält 3 Vectoren:

    Vector 1: [1, 2, 3]
    Vector 2: [4, 5]
    Vector 3: [6, 7, 8]

    Die Ausgabe in die Datei sollte dann folgendermassen aussehen:

    1 4 6
    1 4 7
    1 4 8
    1 5 6
    1 5 7
    1 5 8
    2 4 6
    2 4 7
    2 4 8
    2 5 6
    2 5 7
    usw.

    Ist so etwas möglich? Hat mir jemand eine Idee, oder sogar ein Codeschnipsel wie ich diese Aufgabe lösen könne?

    Mfg syntaxx



  • Erklären wie das geht kann ich dir nicht, aber such mal bei google nach PERMUTATIONEN .

    [Edit]
    Oder guckst du hier
    http://www.uni-flensburg.de/mathe/zero/aufgaben/_permutationen/_permutationen.html



  • du kannst zb so vorgehen:

    for(int i=0;i<v1.length;i++)
      for(int j=0;j<v2.length;j++)
         for(int k=0;i<v3.length;k++)
         {
            //v1[i],v2[j],v3[k] ausgeben in einer datei
         }
    

    viel spass und glück wünsche ich dir



  • Hi

    du bist doch schon auf den richtigen weg, sonst hättest du gar nicht einen teil der ergebnisliste von hand aufstellen können. Das was du da gemacht hast, musst du nur in ein programm umsetzen.

    vergleich das was du machen must mal mit vektoren die immer 10 elemente enthälten, immer von 0 bis 9. im prinzip das zählen in unserem zahlensystem nur mit vorlaufnullen. du weist das es keine elftes Element in dem Vektor gibt. also nimst du das erste Element des Vektors und generirst einen "überlauf" ( du versuchst im davorliegenden vektor das nächste element zu nehmen)

    Vektor 1 [0,1,2,3,4,5,6,7,8,9]
    Vektor 2 [0,1,2,3,4,5,6,7,8,9]
    Vektor 3 [0,1,2,3,4,5,6,7,8,9]

    0 0 0
    0 0 1
    . . .
    0 0 9 überlauf. nach neun gibts ken ziechen mehr also 0. überlauf heist in vektor 2 von 0 auf 1.
    0 1 0
    . . .
    0 1 9
    0 2 0

    nur must du das ganze auf vektorgrössen implementieren.

    Ich würde 2 hilfsspeicher verwenden, in dem ich mir die einzelnen vektorpositionen merken würde, die ich für aktuelle ausgabe benötige. in einem 2. die maximalen werte um die überläufe zu erkennen.

    viel spass beim implementieren


Anmelden zum Antworten