算法1
考点:递归搜索树
思路:dfs
C++ 代码
#include<iostream>
using namespace std;
const int N=15;
int n;
int st[N];//状态,记录每个位置当前的状态,0表示没考虑,1表示选他,2表示不选
void dfs(int u){
if(u>n){
for(int i=1;i<=n;i++)//遍历一遍
if(st[i]==1)//如果选他则输出
printf("%d ",i);
printf("\n"); //输入回车
return ;
}
st[u]=2;//不选的情况
dfs(u+1);
st[u]=0;
st[u]=1;//选的情况
dfs(u+1);
st[u]=0;//恢复现场
}
int main(){
cin>>n;
dfs(1);
return 0;
}