Pagini recente » Cod sursa (job #1642840) | Cod sursa (job #1982083) | Cod sursa (job #2221763) | Cod sursa (job #458554) | Cod sursa (job #374612)
Cod sursa(job #374612)
//80 p
#include <fstream>
using namespace std;
int n, a[19], k;
ifstream fi("combinari.in");
ofstream fo("combinari.out");
// La fiecare apel se stabileste o valoare in sir.
void comb (int l) { // se va pune o valoare pe locul l
int i, linf, lsup; // variabila locala, memorata separat pentru fiecare apel
if (l <= k) { // conditie care "protejeaza"
linf = a[l-1] + 1; lsup = n - k + l;
for (i = linf; i <= lsup; i++) { // i este valoarea care se pune pe locul l
a[l] = i;
comb (l + 1); // la pasul urmator vom pune valoare pe locul l+1
}
}
else {
for (i = 1; i <= k; i++)
fo << a[i] << ' ';
fo << '\n';
}
}
int main () {
fi >> n >> k;
comb (1); // mai intai punem o valoare pe locul 1 din n-uplu
return 0;
}
/*
l max
--------
k n
k-1 n-1 max-l = n-k => max = n-k+l
k-2 n-2
*/