PHP Kombinationsmöglichkeiten

Status
Für weitere Antworten geschlossen.

izakstern

Cadet 3rd Year
Registriert
Apr. 2011
Beiträge
49
Hallo Leute,

vielleicht kann mir jemand von euch helfen, auch wenn ich glaube das es eher fehlendes mathematisches Wissen als fehlende PHP-Kenntnisse sind.

Ich würde gerne alle möglichen Kombinationsmöglichkeiten ausgeben bzw. in ein Array speichern. (also nicht nur die Anzahl)

D.h. ich habe eine Zahl n die als Anzahl der Zeichen dienen soll, jedes Zeichen kann entweder A oder B sein. Wenn n also 2 ist, bräuchte ich als ausgabe AA, AB, BA, und BB. Das Fernziel ist es auch noch herauszufiltern, in welchen Kombinationen das B neben einem anderen B steht, da dies nicht erlaubt ist. D.h. Ergebnis wäre AA, AB, BA.

Das Hirn war dafür leider zu klein. Hat jemand ne Idee?

LG
 
Der erste Schritt wäre wohl eine For-Schleife über "n"...

Korrektur: Wie bei jeder Software-Entwicklung ist der erste Schritt: Zerlege das Problem in möglichst kleine Teilprobleme.
Danach machst du dir Schaubilder für jedes Teilproblem, z.B. als PAP (Programmablaufplan, gibst gute Werkzeuge für). Diese Schaubilder setzt du dann in Code um. Am Ende hast du, wenn du nicht gepfuscht hast, ein komplexes Programm aus vielen kleinen quasi-trivialen Fragmenten.
 
Ich denke rekursiv kommt man hier einfacher zum Ziel als iterativ.
Bsp: Alphabet={a,b}, Stellen=3

Code:
a(alle 2-stelligen folgen) = aa(alle 1-stelligen folgen) = aaa
                                                         = aab
                           = ab(alle 1-stelligen folgen) = aba
                                                         = abb
b(alle 2-stelligen folgen) = analog zu a
 
Vom Prinzip her ein binärer Suchbaum mit der Tiefe n = Anzahl der Stellen. Beim rekursiven Auslesen müsste nur noch die Bedingung mit den beiden Bs rein. Oder hinterher eine Suche über die Ergebnismenge und ungültige Werte rausschmeißen.
 
Bin mir jetzt nicht ganz sicher, aber irgendwo hinten im Hirn steckt das mit Potenzen, wie:

$ste = // Anzahl der Stellen
$zei = // Anzahl der möglichen Zeichen
$kombis = // Anzahl der Kombinationen

$kombis = pow($ste, $zei); // pow(base, exp) ...


Das mit dem BB sollte ja pro Zeichenkette "Anzahl der Stellen" -1 mal auftauchen, wenn ich dich recht verstehe.
BB
BBA ABB
BBAA ABBA AABB
BBAAA ABBAA AABBA AAABB

Das wäre dann:

$bbs = count($ste) - 1;

Endresultat:

$kombis = $kombis - $bbs;
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben