递归实现指数型枚举
解题思路:
递归模拟是否过某点,储存在数组中,在每个递归边界跳出时,打印信息即可。
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int book[20],n;
void way(int pos){
if(pos>n){
for(int i=1;i<=n;i++){
if(book[i])cout<<i<<" ";
}
cout<<endl;
return ;
}
book[pos]=1;//过该个点
way(pos+1);//下一条路
book[pos]=0;//不过该个点
way(pos+1);
}
int main(){
cin>>n;
way(1);//从点1开始
}