子集生成算法——增量构造法

来源:互联网 发布:mac 复制粘贴程序 编辑:程序博客网 时间:2024/05/22 06:58

思路是一次选出一个元素放入集合中

生成0~n的子集,每次选出最小的值放入集合中,通过从0递增得到下一个位置的值。

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>#include<algorithm>using namespace std;void sutset(int n,int* a,int cur){    for(int i=0;i<cur;i++)printf("%d ",a[i]);    printf("\n");    int s=cur?a[cur-1]+1:0;//得到最小的可能值     for(int i=s;i<n;i++){        a[cur]=i;// 从剩下的数中选出最小值         sutset(n,a,cur+1);    }}int main(){    int a[3]={1,2,3};    sutset(4,a,0);}
0 2
原创粉丝点击