Pagini recente » Cod sursa (job #6846) | Cod sursa (job #583779) | Cod sursa (job #260146) | Cod sursa (job #728729) | Cod sursa (job #1862002)
#include <iostream>
#include <fstream>
using namespace std;
struct List {
int head;
List *tail;
};
List *emptylist = nullptr;
List *sol;
int n, h;
List* prepend(int val, List* list) {
return new List{val, list};
}
List* pop(List* list) {
if(list == emptylist)
return emptylist;
else
return list->tail;
}
void print(List* list) {
if(list != emptylist) {
print(list->tail);
printf("%d ", list->head);
}
}
void explore(int k, int val) {
if (k == h) {
print(sol);
printf("\n");
} else { // n-k+h
for (int i = val + 1; i <= n - h + k + 1; i++) {
sol = prepend(i, sol);
explore(k + 1, i);
sol = pop(sol);
}
}
}
int main() {
freopen("combinari.in", "rt", stdin);
freopen("combinari.out", "wt", stdout);
cin >> n >> h;
for (int i = 1; i <= n - h + 1; i++) {
sol = new List{i, emptylist};
explore(1, i);
}
return 0;
}