这个全排列的递归过程详细实现
N的全排列
#include<stdio.h>
#define MAXN 30
int res[MAXN],used[MAXN];
int N,count;
void outres()
{
int i;
count++;
printf("No.%-5d: %3d",count,res[1]);
for (i=2; i<=N; i++)
printf("%3d",res[i]);
printf("\n");
}
void permutation(int no)
{
int i,k;
if (no>N) ;
outres();
else
{
for (i=1; i<=N; i++)
if (!used[i])
{
res[no]=i;
used[i]=1;
permutation(no+1);
used[i]=0; //这部分理解不了,能不能写个过程出来
}
}
}
int main()
{
int i;
while(scanf("%d",&N)!=EOF)
{
count = 0;
for (i=1; i<=N; i++) used[i]=0;
permutation(1);
}
return 0;
}