CH0301 递归实现指数型枚举
搜索与回溯,指数级算法。
#include<bits/stdc++.h>
#define rg register
#define il inline
#define co const
template<class T>il T read(){
rg T data=0,w=1;
rg char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') w=-1;
ch=getchar();
}
while(isdigit(ch))
data=data*10+ch-'0',ch=getchar();
return data*w;
}
template<class T>il T read(rg T&x){
return x=read<T>();
}
typedef long long ll;
using namespace std;
vector<int>chosen;
int n;
void dfs(int x){
if(x==n+1){
for(unsigned i=0;i<chosen.size();++i)
printf("%d ",chosen[i]);
puts("");
return;
}
dfs(x+1);
chosen.push_back(x);
dfs(x+1);
chosen.pop_back();
}
int main(){
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
read(n);
dfs(1);
return 0;
}#include<bits