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