Algorithmus drucken alle Buchstaben des Strings in lexikographische Ordnung
Habe ich versucht den code zu generieren, der alle möglichen Kombination der gegebenen Zeichenfolge in der lexikographischen Reihenfolge:
Den code, den ich geschrieben habe ist:
void get(char *n)
{
int l=strlen(n);
sort(n,n+l);
int k=0,m,i,j,z;
while(k<l)
{
m=k;
for(i=k;i<l;i++)
{
for(j=k;j<=i;j++)
cout<<n[j];
cout<<"\n";
}
for(z=m+2;z<l;z++)
cout<<n[m]<<n[z]<<"\n";
k++;
}
}
int main()
{
char n[100];
cin>>n;
get(n);
return 0;
}
Angenommen, der string ist : abcde
Mein code ist nicht die Erzeugung Kombinationen wie:
abd
abe
Den Ausgang bin ich immer für die Zeichenfolge "abcde" sind:
a
ab
abc
abcd
abcde
ac
ad
ae
b
bc
bcd
bcde
bd
be
c
cd
cde
ce
d
de
e
Meiner Ausgabe nicht enthalten Zeichenfolgen wie : abd abe
Hoffe, das macht die Frage klar
How zu generieren, die alle diese Kombinationen mit Hilfe eines effizienten Algorithmus
Welchen output bekommen Sie? Es kann helfen bei der Aufzucht der Fehler, ohne uns tatsächlich zu kompilieren und führen Sie das Programm.
Es ist l ,ich bin Sortieren Sie die Zeichenfolge zu finden, die lexikographisch kleinste Zeichenkette, kann sein erreicht durch den angegebenen string und dann fortfahren
Es ist l ,ich bin Sortieren Sie die Zeichenfolge zu finden, die lexikographisch kleinste Zeichenkette, kann sein erreicht durch den angegebenen string und dann fortfahren
InformationsquelleAutor sac | 2015-03-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist eine einfache rekursive Ansatz:
Vielleicht nicht der effizienteste Weg, es zu tun, aber eine kurze und einfache. Beachten Sie, dass die Aufzählung aller Kombinationen hat eine Komplexität von O(2n) sowieso. So gibt es keinen effizienten Algorithmus überhaupt.
InformationsquelleAutor user0815
Kann Folgendes helfen:
Live-Beispiel
InformationsquelleAutor Jarod42