使用递归的方式求解一个集合的元素的全排列,n个元素的全排列等于n个元素和对应的剩余的n-1个元素的全排构成,依次类推。
#######################################################################
#include <stdio.h>
#include <stdlib.h>
int t = 0;
void swap(int *a, int *b)
{
int m;
m = *a;
*a = *b;
*b = m;
}
void perm(int list[],int begin ,int n)
{
int i;
if(begin==n)
{
for(i = 0; i <=n; i++)
printf("%d ", list[i]);
printf("\n");
t++;
}
else
{
for(i = begin; i <=n; i++)
{
swap(&list[begin], &list[i]);
perm(list, begin+1, n);
swap(&list[begin], &list[i]);
}
}
}
int main()
{
int list[] = {1, 2, 3,4};
perm(list, 0, 3);
printf("total:%d\n", t);
system("pause");
return 0;
}