题目描述
blablabla
样例
#include<iostream>
using namespace std;
int n;
//u是当前枚举到的数字,state是个2进制
//1-n个数字
//001----1
//010----2
void dfs(int u,int state)
{
if(u==n)
{
for(int i=0;i<n;i++)//0---n-1 01111001010
//右移i=0位,就是不移,即判断1取不取,从右边逐渐移位
//正好是按照从小到大的顺序 1 2 3 .。。
//移0位的时候正好是1,这时候输出的是1,所以i+1
if(state>>i&1)
cout<<i+1<<" ";
cout<<endl;
return;
}
dfs(u+1,state);//这个数字不选
dfs(u+1,state|=(1<<u)); //将对应位数换成1
}
int main()
{
cin>>n;
dfs(0,0);
}