数的全排列
程序员文章站
2022-03-22 19:21:57
...
数的全排列
将数1~n全部排列出来,每个数字都得出现且只能出现一次
#include <stdio.h>
int a[1001];
void f(int n,int k)
{
if(k==n+1)
{
for(int z=1;z<=n;z++)
printf("%d",a[z]);
printf("\n");
return;
}
int count=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<k;j++)
if(i!=a[j])
count++;
if(count==k)
{
a[k]=i;
f(n,k+1);
}
count=1;
}
}
int main()
{
int n;
scanf("%d",&n);
f(n,1);
return 0;
}
此处用递归的方法,用一个数组a[]保存每一层所用的数字,每次都要找出与前面的已用的数字不同的数字。递归出口就是n个数字都已经用掉,接着输出a[]。
此处我们假设n=3: