对数组元素进行枚举排列
/*全排列 输入元素个数n,然后输入具体元素,对元素进行枚举排列*/
#include <stdio.h>
#define MAX 100
void print_permutation(int n,int *A,int cur)
{
int i,j,ok;
if(cur==n) //递归边界
{
for(i=0;i<n;i++)
printf("%d ",A[i]);
printf("\n");
}
else
for(i=1;i<=n;i++) //尝试在A[cur]中填各种整数i
{
ok=1;
for(j=0;j<cur;j++)
if(A[j]==i) ok=0; //如果i已经在A[0]~A[cur-1]出现过,则不能再选
if(ok)
{
A[cur]=i;
print_permutation(n,A,cur+1); //递归调用
}
}
}
void main()
{
int s[MAX]={0},n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&s[i]);
printf("\n");
print_permutation(n,s,0);
}
结果:

浙公网安备 33010602011771号