Wie kann man alle Buchstabenkombinationen einer Strings herauskriegen?



  • Hi,

    ich habe einen String "abcd". Wie kann ich alle Kombinationen per Programm durchgehen?

    also acbd, bcda, dcba usw...

    Wäre toll, wenn mal jemand Pseudocode posten könnte.



  • In C++: next_permutation() (ich glaube, im C++ Board ist neulich ein "next_combination()" aufgetaucht)



  • danke für die schnelle hilfe.

    kannst du mir vielleicht mal ein beispiel für die funktion geben? ich frage mich, wie man mitbekommnt wann alle kombinationen durchlaufen sind.

    gibts sowas auch in c#?

    bist ein schatz, cStoll 🙂



  • roflcopterpilot schrieb:

    kannst du mir vielleicht mal ein beispiel für die funktion geben? ich frage mich, wie man mitbekommnt wann alle kombinationen durchlaufen sind.

    Klar:

    string text = "abcd";
    //um wirklich alle Permutationen zu erwischen, mußt du mit sortierter Reihenfolge starten, s.u.
    while(next_permutaion(text.begin(),text.end()))
      cout<<text<<endl;
    

    next_permutation() liefert false zurück, wenn es "überläuft" von der höchsten Permutaion "dcba" zur niedrigsten "abcd", ansonsten true.

    gibts sowas auch in c#?

    Keine Ahnung, das müsstest du die C#-ler fragen.
    (Alternativ - du nimmst dir die <algorithm> vor und schaust dir an, wie np arbeitet, dann kannst du die Lösung nach C# übersetzen)



  • Hey CStoll,

    kannst du mir sagen welche Library ich einbinden muss, damit die next_permutation-Funktion funktioniert?

    Ich benutze DevCpp



  • Klar - der bereits oben erwähnte Header <algorthm> (und <string> für die std::string Klasse).



  • hi cstoll,

    leider klappts nicht.

    hier der code:

    #include <cstdlib>
    #include <iostream>
    #include <algorithm>
    #include <functional>
    #include <vector>
    #include <string>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
    string text = "abcd"; 
    while(next_permutaion(text.begin(),text.end())) 
      cout<<text<<endl;
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    }
    

    die Fehlermeldung lautet:
    13 C:\Dokumente und Einstellungen\Schüler.C119-100\Desktop\dev\Dev-CppPortable\App\devcpp\main.cpp `next_permutaion' undeclared (first use this function)



  • Du hast einen Tipfehler in 'next_permutation'



  • ok danke, jetzt klappts 🙄


Anmelden zum Antworten