位运算:求子集

简介: 题目描述:利用递归方法生成具有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;

}

目录
相关文章
|
5月前
|
设计模式 算法 Java
【数据结构和算法】递增的三元子序列
给你一个整数数组nums,判断这个数组中是否存在长度为3的递增子序列。 如果存在这样的三元组下标(i, j, k)且满足i < j < k,使得nums[i] < nums[j] < nums[k],返回true;否则,返回false。
74 3
|
2月前
|
算法
【算法】位运算算法——只出现一次的数字Ⅱ
【算法】位运算算法——只出现一次的数字Ⅱ
|
2月前
|
算法
【算法】位运算算法——两整数之和
【算法】位运算算法——两整数之和
|
5月前
|
机器学习/深度学习 算法 测试技术
【位运算 子集状态压缩】982按位与为零的三元组
【位运算 子集状态压缩】982按位与为零的三元组
【位运算 子集状态压缩】982按位与为零的三元组
|
5月前
|
存储 算法 C++
算法:位运算
算法:位运算
33 2
|
5月前
|
存储 算法 测试技术
位运算、状态压缩、枚举子集汇总
位运算、状态压缩、枚举子集汇总
|
5月前
|
人工智能 测试技术
【位运算 状态压缩 枚举子集】1178. 猜字谜
【位运算 状态压缩 枚举子集】1178. 猜字谜
|
5月前
|
算法 测试技术 C#
【位运算】【 数学】【 哈希映射】2857. 统计距离为 k 的点对
【位运算】【 数学】【 哈希映射】2857. 统计距离为 k 的点对
|
5月前
|
算法
算法基础——整数二分查找(二)
算法基础——整数二分查找(二)
56 0
算法基础——整数二分查找(二)
|
5月前
|
算法 网络协议 Java
【算法系列篇】位运算-2
【算法系列篇】位运算-2