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
    cab

    und 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: dcaa

    Das 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.


Anmelden zum Antworten