子集合生成的方法 增量构造法
#include<cstdio>
#include<algorithm>
#include<string>
#include<iostream>
void print_subset(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;
print_subset(n, A, cur + 1);
}
}
int main() {
int n;
int A[30];
memset(A, 0, sizeof(A));
while (scanf("%d", &n) == 1) {
print_subset(n, A, 0);
}
return 0;
}