0
我想一個字符串的所有排列存儲在一個字符串數組...將一個字符串的所有可能的排列存儲在一個數組中?
現在我正在使用的代碼是:
# include <stdio.h>
char *pms[] = {};
int pmsi = 0;
void swap (char *x, char *y)
{
char temp;
temp = *x;
*x = *y;
*y = temp;
}
void permute(char *a, int i, int n)
{
int j;
if (i == n) {
pms[pmsi] = a;
pmsi++;
}
else
{
for (j = i; j <= n; j++)
{
swap((a+i), (a+j));
permute(a, i+1, n);
swap((a+i), (a+j)); //backtrack
}
}
}
/* Driver program to test above functions */
int main()
{
char a[] = "ABC";
permute(a, 0, 2);
int i;
for (i = 0 ; i < pmsi ; i++) {
printf("%s",pms[i]);
}
return 0;
}
但這種崩潰......
我不想打印出所有可能的排列......我想將它們存儲在一個數組中。
是否有修復?
您正在爲所有元素存儲相同的地址,即在pms數組中。你應該創建內存來保存這些組合,並且複製每個組合數組而不是賦值。 – radar 2014-11-23 14:27:04
閱讀有關數組和指針之間的區別。另請閱讀關於如何在通用和C-「字符串」(零終止'char'-數組)中填充數組(具體參見'str *' - 函數族)。 – alk 2014-11-23 14:55:03