题目描述:
利用递归方法生成具有n个元素的集合的所有子集。
输入:
第一行1有一个数字n,0<n<10。第二行有n个数字,代表集合中的数。
输出:
按照集合的格式这个集合所有自己的所有元素,每个子集占一行。
如果碰到看不懂的地方,请看我的另一篇博客
分析:
这道题用到了位运算,废话不多说,上代码:
include
include
using namespace std;
int main(void)
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=0;i<(1<<n);i++)
{
vector<int> arr;
for(int j=0;j<n;j++)
{
if(i&(1<<j))
{
arr.push_back(a[j]);
}
}
cout<<"{";
for(int j=0;j<arr.size();j++)
{
int s=arr[j];
if(j!=arr.size()-1)
{
cout<<s<<" ";
}else{
cout<<s;
}
}
cout<<"}";
cout<<endl;
}
return 0;
}
最后一次更新于2022-02-11
0 条评论