#include<iostream>
using namespace std;
int n;
//u表示当前需要枚举第几位,state代表每一位的状态,利用状态压缩,32位int足够压缩所有状态
void dfs(int u,int state){
if(u == n){//注意,是到n时推出循环,不是n-1,因为到n-1表示当前需要 枚举第n位
for(int i = 0;i < n;i++)
if(state >> i & 1) cout << i + 1 << ' ';
cout << endl;
return; //return勿忘。
}
dfs(u + 1,state);
dfs(u + 1,state | 1 << u);
}
int main(){
cin >> n;
dfs(0,0);
return 0;
}
92. 递归实现指数型枚举
最新推荐文章于 2024-01-20 16:39:06 发布