#include #include void print_set(int* x, int n); void generate_f(int* x, int k, int j, int n); void generate_b(int* x, int k, int j, int n); int main() { int n, k, i; int* x; scanf("%d %d", &n, &k); x = malloc(sizeof(int)*n); if(x == NULL) exit(EXIT_FAILURE); for(i=0; i=j) return; generate_f(x, k, j-1, n); if(k==1) { x[j-1]=1; x[j-2]=0; print_set(x, n); } else { x[j-1]=1; x[k-2]=0; print_set(x, n); } generate_b(x, k-1, j-1, n); return; } void generate_b(int* x, int k, int j, int n) { if(k<=0 || k>=j) return; generate_f(x, k-1, j-1, n); if(k==1) { x[j-2]=1; x[j-1]=0; print_set(x, n); } else { x[k-2]=1; x[j-1]=0; print_set(x, n); } generate_b(x, k, j-1, n); return; } void print_set(int* x, int n) { int i; for(i=0; i