Ich versuche alle Strings von Länge zu erzeugen n
, so daß jede Teilkette der Länge 4
Schnur w
alle drei Buchstaben a, b, c
auftreten . Zum Beispiel sollte abbcaabca
gedruckt werden, wenn n = 9
, aber aabbcabac
sollte nicht enthalten sein.C++ Programm die Anzahl der Strings w der Länge zu berechnen, n über {a, b, c}
Im Moment drucke ich nur alle Permutationen, aber ich weiß nicht, wie man nur die für diese Sprache druckt.
void swap(char *x, char *y)
{
char temp;
temp = *x;
*x = *y;
*y = temp;
}
void permute(char *a, int l, int r)
{
int i;
if (l == r)
printf("%s\n", a);
else
{
for (i = l; i <= r; i++)
{
swap((a+l), (a+i));
permute(a, l+1, r);
swap((a+l), (a+i));
}
}
}
int main(){
int n;
cout << "Enter n: " << endl;
cin >> n;
char str[] = "abc";
int x = n % 3;
if (x != 0){
for (int i = 0; i < x; i++)
*str = *str + str[i];
}
permute(str, 0, n - 1);
return 0;
}
versuchen, Wort in ein Zeichen zu teilen. Dann zähle es, wenn die Zählung gleich n = 9 ist, sollte es deine Buchstaben drucken –
Ich habe versucht, es so zu machen, dass nach n> 4 nur Zeichen an die berechnete Permutation von nur Länge 4 anhängen, aber es ist gerade richtig unordentlich geworden. – Brittney
@Brittney Können Sie Ihre Frage bitte bearbeiten, um den entsprechenden Code einzuschließen? – rhughes