aus einer buchstaben folge alle kombinationen generieren
-
hi
hi
#include <iostream> using namespace std; const int MAX=4; bool vergleiche(char a[],char b) { for(int i=0;i<MAX;i++) { if(a[i]!=b) return false; } return true; } int main() { int count=0; char zeichen[MAX+1]={'a','b','c','d','\0'}; int stelle=0; bool ende=false; char tarro[MAX+1]={'a','a','a','a','\0'}; //Stelle 0 1 2 3 cout<<tarro<<endl; while(!ende) { stelle++; tarro[0]=zeichen[stelle]; cout<<"1: "<<tarro<<endl; count++; if(stelle==3) stelle=0; if(tarro[stelle]=='d') { if(tarro[stelle+1]!='d' && tarro[stelle+1]!='\0'){ tarro[stelle+1]++; cout<<"2: "<<tarro<<endl; count++; if(vergleiche(tarro,'d')){ cout<<"\nTHE END\n"; ende=true; } else{ tarro[stelle]='a'; cout<<"3: "<<tarro<<endl; count++; } } } } cout<<"Anzahl: "<<count; return 0; }
der algorithmus soll wie ein tarrometer eines autos funktionieren.
das positive ist: wenn ich mit 3 buchstaben arbeite, z.b.: a,b,c dann kommen auch alle 27 möglichkeiten heraus.
arbeite ich jedoch mit a,b,c,d kommen nur 224 möglichkeiten von 256 heraus....ich weiß nicht wie ich das problem lösen kann um wirklich alle möglichkeiten zu generieren.cYa
cYa
-
Bei abc gibt es doch nur 6Möglichkeiten
abc
acb
bca
bac
cba
cabund bei 4 komme ich auf 24 mögliche Kombinationen.
-
Und was ist mit:
aaa
abb
acc
baa
bba
bbb
bcc
bbc
....Wenn jeder Buchstabe max. 1 x vorkommen darf, hast du natürlich recht.
-
der algorithmus soll wie ein tarrometer eines autos funktionieren.
???
Ich kann mir nicht ganz vorstellen was du hier meinst.Wenn ich davon ausgehe das du die Buchstaben einfach nur hochzaehlen willst wie z.B.
aaa
aac
aba
abb
abc
aca
acb
...
Wie bei einem Zahlensystem zur Basis 3 bzw. dann 4, dann funzt dein Algorithmus einfach nicht, ich habe da leider nicht so wirklich durchgeblickt, aber der gibt auch doppelte Zeichenketten aus z.B:
aaaa
1: baaa
1: caaa
1: daaa
2: dbaa //erstes mal
3: abaa
1: bbaa
1: cbaa
1: dbaa //hier zum 2.mal
2: dcaaDas es es n^n Möglichkeiten bei n Zeichen und n Stellen gibt ist allerdings richtig.
Wenn du deinen Algorithmus mal etwas erläutern kannst versuche ich dir gerne weiter zu helfen.
-
Stimmt, dann hab ich das falsch verstanden, ging von max 1 Buchstabe aus.
Die Aufgabe ist so aber sogar leichter, wenn jeder Buchstabe mehrmals vorkommen
darf.