题意:给出一个数组输出所有子集
代码:
#include <iostream>
using namespace std;
int a[5]={1,3,5,7,8};
int main(){
int i,j,k;
for(i=0;i<(1<<5);i++){ //一共有2的n次幂种情况,每一种情况
j=i;k=0; //所对应的2进制数一定不相同,将二进
while(j){ //制的1视为选中这个数,0视为不选,因
if(1&j)cout<<a[k]<<" "; //因此将二进制的j一位一位向右移动并判
j>>=1;k++; //断是否输出
}
if(i!=0) //避免一上来就出现空行的情况
cout<<endl;
}
return 0;
}