我很不確定爲什麼我的代碼這樣做時,我鍵入6或更多數字/字符,它只顯示一些輸出。 (我知道數字/字符不影響任何東西)。生成所有列表(排列)
例如,如果我輸入的貓,它會列出所有可能的變化: 貓 CTA 行爲 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;
}
您是否嘗試每次調用「mixmatch」時都嘗試打印* A,i和n的值?也許這會給你提供線索...... – Floris 2013-02-27 23:32:16
我沒有看到任何錯誤,它在我的系統上工作 - 打印所有排列123456 – 2013-02-27 23:35:59
感謝您的幫助Aniket! – user2093028 2013-02-27 23:47:31