#include <stdio.h>
void fun(int n,int *A,int cur)
{
int i,j;
if(cur==n) //递归边界
{
for(i=0;i<n;i++)
printf("%d",A[i]);
printf("\n");
}
else for(i=1;i<=n;i++) //尝试在A【k】中填写各种整数i
{
int ok=1;
for(j=0;j<cur;j++)
if(A[j]==i) ok=0; //if i已经出现过不能再选
if (ok)
{
A[cur]=i;
fun(n,A,cur+1); //递归调用
}
}
}
int main()
{
int n;
int a[100];
while (scanf("%d",&n)==1)
{
fun(n,a,0);
}
return 0;
}
算法入门经典 7.2.1(生成1 - n 的排列)
最新推荐文章于 2024-07-05 11:24:47 发布