#include <stdlib.h>
void permutation(int a[], int m, int n)
{
int i;
int t;
if (m<n-1) {
permutation(a, m+1, n);
for (i=m+1;i<n;i++) {
t=a[m]; a[m]=a[i]; a[i]=t;
permutation(a, m+1, n);
t=a[m]; a[m]=a[i]; a[i]=t;
}
} else
{
for( int i = 0; i < n; i++ ) {
printf("%d ",a[i]);
}
printf("\n");
}
}
int main ()
{
int n;
printf("請輸入數字個數:");
scanf("%d",&n);
int *p = (int*)malloc(n*sizeof(int));
printf("請輸入%d個不同數字:",n);
int *q = p;
for(int i = 0; i < n; i++ ) {
scanf("%d",q++);
}
printf("出棧序列為:\n");
permutation( p, 0, n );
free(p);
}