出力の一部しか表示されない6つ以上の数字/文字を入力したときに、コードがこれを行う理由がよくわかりません。(数字/文字は何にも影響しないことを私は知っています)。
たとえば、catと入力すると、考えられるすべてのバリエーションが一覧表示されます。cat cta act atc tac tca
しかし、123456(または6文字以上の文字列)を入力すると、462513-612345で表示が開始されます(意味がわかっている場合)。残り(123456-462513)はどうなりましたか?
#include <stdio.h>
#include <string.h>
void swap (char *X, char *Y)
{
char Z;
Z = *X;
*X = *Y;
*Y = Z;
}
void mixmatch (char *A, int i, int n)
{
int j;
if (i == n)
printf("%s\n", A);
else
{
for (j = i; j <= n; j++)
{
swap((A+i), (A+j));
mixmatch(A, i+1, n);
swap((A+i), (A+j));
}
}
}
int main()
{
char A[100];
printf ("Enter the string/set of numbers: ");
gets(A);
int k;
k=strlen(A);
mixmatch(A, 0, k-1);
return 0;
}