对于给定的正整数n(1<=n<=10),求1~n构成的集合的所有子集(幂集)。
输入格式:
输入1个整数n。
输出格式:
输出1~n构成的集合的所有子集(幂集),一个集合占一行,集合的元素用{}括起来,元素之间用逗号分隔,最后1个元素后面没有逗号
样例">输入样例:
在这里给出一组输入。例如:
3
输出样例:
在这里给出相应的输出。例如:
{}
{1}
{2}
{1,2}
{3}
{1,3}
{2,3}
{1,2,3}
以题目n=3为例:
1,2,3的初始状态都设为0,
如果对应状态为1,那么置为0;如果对应状态为0,那么置为1,并跳出循环。
判断状态为1的输出。
这是根据输出样例得出的规律,按样例表示为:
{},000,需要提前输出
{1},100
{2},010
{1,2},110
{3},001
{1,3},101
{2,3},011
{1,2,3},111
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[11]={0},n,i,j,cnt;
cin>>n;
cout<<"{}"<<endl;
for(i=1;i<pow(2,n);i++){
cnt=0;
for(j=1;j<=n;j++){
if(a[j]==1) a[j]=0;
else{
a[j]=1;
break;
}
}
cout<<'{';
for(j=1;j<=n;j++){
if(a[j]==1){
if(cnt!=0)cout<<",";
cout<<j;
cnt++;
}
}
cout<<"}"<<endl;
}
return 0;
}