您的位置:首页 > 其它

增量构造法输出所有子集

2017-07-06 16:03 288 查看
给定一个集合,元素为{0,1,2,3,4.。。。。。n},输出所有的子集

思路是一次选出一个元素放入到集合A中,A始终保持从小到大顺序,cur记录当前子集中元素个数,下一个递归的子集为A[cur-1] + 1到n中任意选一个数添加在A的末尾,表示子集个数加1.

#include <iostream>
using namespace std;
void print_subset(int n, int* A, int cur)
{
for(int i = 0; i < cur; i++) cout<<A[i]<<" ";
if(cur)cout<<endl;
int s = cur ? A[cur-1] + 1 : 0;
for(int i = s; i < n; i++)
{
A[cur] = i;
print_subset(n, A, cur+1);
}

}
int main()
{

while(1)
{
int n;
cin>>n;
int A[20];
print_subset(n, A, 0);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: