一共有2的n次幂种情况,每一种情况所对应的2进制数一定不相同,将二进制的1视为选中这个数,0视为不选,因此将二进制的j一位一位向右移动并判断是否输出
附上代码:
#include<bits/stdc++.h>
using namespace std;
int a[]={1,2,3,4,5};
int n=5;
int main(){
for(int i=0;i<(1<<n);i++){
int t=i,k=0;
while(t){
if(1&t){
cout<<a[k]<<" ";
}
t>>=1,k++;
}
if(i) cout<<endl;
}
}