#include<bits/stdc++.h>
using namespace std;
int num[10];
bool ch[10];
int n;
void dfs(int s)
{
if(s==n)
{
for(int i=0;i<n;i++)
{
cout<<num[i]<<" ";
}
cout<<endl;
}
for(int i=1;i<=n;i++) #第一代父母,即1~n
{
if(!ch[i])
{
num[s]=i;
ch[i]=true;
dfs(s+1); #递归寻找孩子
ch[i]=false;#不影响其它父母寻找孩子
}
}
}
int main()
{
cin>>n;
dfs(0);
return 0;
}
#可以把整个排列看成是一棵树,0是根,1~n是0的孩子,2~n又是1的孩子,以此类推
AcWing 排列数字 842
最新推荐文章于 2024-11-12 12:29:51 发布
这篇文章详细描述了一个用C++编写的深度优先搜索算法,用于遍历一个以0为根的树形结构,其中整数数组表示节点值,布尔数组标记节点是否已访问。
摘要由CSDN通过智能技术生成