我正在使用递归算法来列出数组 p = {1,2,3} 的元素的所有可能排列。以下是我正在使用的简单递归实现:
void swap(int x, int y){
int temp = array[x];
array[x]=array[y];
array[y]=temp;
return;
}
void printArray(int size){
int i;
for (i=0;i<size;i++)
printf("%d ", array[i]);
printf("\n");
return;
}
void permute(int k,int size){
int i;
if (k==0)
printArray(size);
else{
for (i=k-1;i>=0;i--){
swap(i,k-1);
permute(k-1,size);
swap(i,k-1);
}
}
return;
}
问题是我不想打印它们,而是想将每个排列添加到二维数组中。目前,我正在将排列打印到文件中,然后将其读取到二维数组中,但我认为应该有更好的方法来做到这一点。