#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 的排列)
最新推荐文章于 2025-05-19 01:02:14 发布
本文介绍了一种使用递归生成排列的算法实现过程,通过输入整数n和数组A,程序将输出长度为n的所有可能排列组合。
807

被折叠的 条评论
为什么被折叠?



