生成0~n序列的子集
对于0~n的每一个值在集合中都有存在和不存在两种状态,所以递归每个值的存在状态即可生成子集
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<algorithm>
using namespace std;
void sutset(int n,int *b,int cur){
if(cur==n){
for(int i=0;i<n;i++){
if(b[i])printf("%d ",i);
}
printf("\n");
}else{
b[cur]=1;//cur位置上的值存在
sutset(n,b,cur+1);
b[cur]=0;//cur位置上的值不存在
sutset(n,b,cur+1);
}
}
int main(){
int b[4];
sutset(4,b,0);
}