增量构造法

#include<iostream>
#include<cstdio>
#include<cstring>
 
using namespace std;
 
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[4]={0,1,2,3};
    while(scanf("%d", &n) == 1) {
        print_subset(n, A, 0);
    }
    return 0;
}

(参考https://blog.csdn.net/qq_30388187/article/details/76982403)

猜你喜欢

转载自www.cnblogs.com/KasenBob/p/9991367.html