#include<stdio.h>
int hash[10]={0};//表示第i个数是否访问过
int p[10];//存放排列
int n;
void g(int index)//处理第index个位置
{
//边界
if(index==n+1)//输出全排列
{
for(int i=1;i<=n;++i)
printf("%d ",p[i]);
printf("\n");
}
for(int x=1;x<=n;++x)
{
if(hash[x]==0)//第i个数未访问
{
hash[x]=1;//设为访问
p[index]=x;//第index个位置上放置i
g(index+1);//处理第index+1个位置
hash[x]=0;//回溯
}
}
}
int main()
{
scanf("%d",&n);
g(1);
return 0;
}
全排列(回溯法)
最新推荐文章于 2024-04-28 10:00:00 发布