Jede Möglichkeit errechnen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Jede Möglichkeit errechnen

    Hi @all,

    ich galub ich habe einfach schon zu viel gearbeitet in jetzter Zeit... ich bekomm das Problem einfach nicht gelöst, obwohl ich mir sicher bin, dass es eigentlich ganz einfach ist.



    Um das ganze auf mein Grundproblem zu reduzieren:

    ich habe mehrere Orte (A, B, C ....)

    Jetzt muss ich jeden mlöglichen Weg finden.

    Jeder Ort darf nur einmal in einem Weg vorkommen.


    Mein Ergebnis sollte also so aussehen:
    ABC
    ACB
    BAC
    BCA
    CAB
    CBA

    ich hoffe mir kann jemand helfen.

    Ich will nämlich nicht x*1000 for-loops machen
    Zuletzt geändert von Winner; 04.11.2004, 10:25.
    Wenn die Tatsachen nicht mit der Theorie übereinstimmen –

    um so schlimmer für die Tatsachen.

  • #2
    rekursion ist toll
    PHP-Code:
    $orte = array('A''B''C''D');

    function 
    calc($places) {
        return 
    preg_split('%\\|%'calc_paths($places), -1PREG_SPLIT_NO_EMPTY);
    }

    function 
    calc_paths($places$already_visited '') {
        if (
    count($places) == 0)
            return 
    $already_visited.'|';
        
    $result '';
        foreach (
    $places as $place) {
            
    $single_result $already_visited.$place;
            
    $remaining array_diff($places, array($place));
            
    $single_result calc_paths($remaining$single_result);
            
    $result .= $single_result;
        }
        return 
    $result;
    }

    var_export(calc($orte)); 
    schnell hingeschmiert, da is noch potential, aber der prinzipielle weg sollte klar sein oder?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Vielen Dank, du bist mein Retter in der Not!

      Ich bin echt nicht drauf gekommen. Ich glaub ich sollte mal schlafen gehen...
      Wenn die Tatsachen nicht mit der Theorie übereinstimmen –

      um so schlimmer für die Tatsachen.

      Kommentar

      Lädt...
      X