题目
解释
- 本题采用DFS算法
- 传入dfs函数的参数为当前所选的数字,例如1 2 3 4
- bool数组用来存放数字是否被选择的情况
- 如果到达叶子节点的阶数则根据bool数组中确定的数字选择情况输出
- 详见递归树图解
图解
代码段
#include<iostream>
using namespace std;
int n;
bool st[N];
void dfs(int u)//u代表层数
{
if(u>n)//叶子节点
{
for(int i=1;i<=n;i++)
if(st[i])
cout<<i<<' ';
cout<<endl;
return;
}
st[u]=true;
dfs(u+1);//选择当前数的分支
st[u]=false;
dfs(u+1);//不选择当前数的分支
}
int main()
{
cin>>n;
dfs(0,0);
return 0;
}