AcWing 92. 递归实现指数型枚举
原题链接
简单
作者:
歇雨短歌
,
2021-04-09 15:51:37
,
所有人可见
,
阅读 264
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int N = 150;
int f[N],m;
bool st[N];
int n;
void dfs (int u)//当前思路是 从1开始到n,每次有选与不选两种情况,选是一种情况,不选又是另一种情况。每次将一种情况到底是 都要回溯。
{//那么问题来了。第一次直接选,如何规定才能使第二次不选呢?我想的是定义一种布尔变量,定义当前数的状态。
if(u>n)
{
for (int i=1;i<=n;i++)//通过每一个数的状态来进行判断
{
if(!st[i])
{
if(i==u-1) printf("%d",i);
else printf("%d ",i);
}
}
printf("\n");
return;
}
st[u]=false;
dfs(u+1);
st[u]=true;
dfs(u+1);
}
int main()
{
cin>>n;
dfs(1);
return 0;
}