从1~n个整数中随机使用任意不相同的数,输出可能的选择方案。
输入格式:
整数n;
输出格式:
每一行输出方案数量;
方案之间要空行。
数据范围1<=n<=15.
示例如下:
输入样例:
3
输出样例:
3
2
2 3
1
1 3
1 2
1 2 3
代码如下:
//指数类型枚举
//由于对与1~n中的每一个数字都有 选与不选 两种选择
#include <iostream>
using namespace std;
const int N=18;
int n;
int st[N];//0表示没有考虑,1表示选到这个数字,2表示不选这个数
//比如st[x]记录要不要选择这个数字 x
void dfs(int x){
if(x>n){
for(int i=1;i<=n;i++){
if(st[i]==1){
cout<<i<<" ";
}
}
cout<<endl;
return;
}
//选择数字
st[x]=1;
dfs(x+1);
st[x]=0;
//不选择这个数
st[x]=2;
dfs(x+1);
st[x]=0;
}
int main(){
cin>>n;
dfs(1);
//从第一个数字开始 也就是1
return 0;
}
//使用递归搜索树来梳理递归逻辑