位运算:求子集

简介: 题目描述:利用递归方法生成具有n个元素的集合的所有子集。输入:

题目描述:

利用递归方法生成具有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;

}

目录
相关文章
|
4月前
|
算法
【算法】位运算算法——两整数之和
【算法】位运算算法——两整数之和
|
7月前
|
机器学习/深度学习 算法 测试技术
【位运算 子集状态压缩】982按位与为零的三元组
【位运算 子集状态压缩】982按位与为零的三元组
|
7月前
|
存储 算法 C++
算法:位运算
算法:位运算
42 2
|
7月前
|
算法 测试技术 C++
【动态规划 区间dp 位运算】3117. 划分数组得到最小的值之和
【动态规划 区间dp 位运算】3117. 划分数组得到最小的值之和
【动态规划 区间dp 位运算】3117. 划分数组得到最小的值之和
|
7月前
|
人工智能 测试技术
【位运算 状态压缩 枚举子集】1178. 猜字谜
【位运算 状态压缩 枚举子集】1178. 猜字谜
|
7月前
|
存储 算法 测试技术
位运算、状态压缩、枚举子集汇总
位运算、状态压缩、枚举子集汇总
|
7月前
|
算法 测试技术 C++
【组合数学】【动态规划】【前缀和】1735生成乘积数组的方案数
【组合数学】【动态规划】【前缀和】1735生成乘积数组的方案数
|
7月前
|
算法
算法基础——整数二分查找(二)
算法基础——整数二分查找(二)
66 0
算法基础——整数二分查找(二)
|
7月前
|
算法 网络协议 Java
【算法系列篇】位运算-2
【算法系列篇】位运算-2
|
7月前
|
算法 网络协议 Java
【算法系列篇】位运算-1
【算法系列篇】位运算-1

热门文章

最新文章