/*
for(a[1]=1;a[1]<=4;a[1]++)
for(a[2]=1;a[2]<=4;a[2]++) if(a[2]!=a[1])
for(a[3]=1;[3]<=4;a[3]++) if(a[3]!=a[1]&&a[3]!=a[2])
for(a[4]=1;a[4]<=4;a[4]++)
if(a[4]!=a[1]&&a[4]!=a[2]&&a[4]!=a[3])
print();
*/
#include <iostream>
#include <iomanip>
using namespace std;
int n,cnt=0;
bool a[30]; // 标记某个数字有没有被选 // picked
void print()
{
cout << "{";
for(int i=1;i<=n;i++) if(a[i])
{
cout << i << " ";
}
cout << "}";
cout << endl;
}
void dfs(int Lv) // level
{
if(Lv==n+1) { cnt++; print(); return; } // Lv>n
for(int i=0;i<=1;i++)
{
a[Lv]=i;
dfs(Lv+1);
}
}
int main()
{
cin>>n;
dfs(1);
cout << cnt << endl;
return 0;
}
c++枚举子集
最新推荐文章于 2024-05-28 21:13:10 发布