#include <iostream>
#include <vector>
std::vector<int> chosen;
int n;
void calc(int x)
{
if(x==n+1)
{
for(int i=0; i < chosen.size();i++)
printf("%d ", chosen[i]);
printf("\n");
return ;
}
calc(x+1);
chosen.push_back(x);
calc(x+1);
chosen.pop_back();
}
void dfs(int u, int state)
{
if(u == n)
{
for(int i = 0 ; i < n; i++)
if(state>>i&1) printf("%d ",i+1);
puts("");
return ;
}
dfs(u+1, state);
dfs(u+1, state|1<<u);
}
int main()
{
scanf("%d",&n);
//calc(1);
dfs(0,0);
return 0;
}
递归实现指数型枚举
最新推荐文章于 2024-09-26 12:00:11 发布