Pagini recente » Cod sursa (job #1906359) | Cod sursa (job #146748) | Cod sursa (job #2365486) | Cod sursa (job #3223728) | Cod sursa (job #374597)
Cod sursa(job #374597)
#include <fstream>
using namespace std;
int n, a[19], k;
ifstream fi("combinari.in");
ofstream fo("combinari.out");
void write() {
int i;
for (i = 1; i <= k; i++)
fo << a[i] << ' ';
fo << endl;
}
// La fiecare apel se stabileste o valoare in sir.
void comb (int l) { // se va pune o valoare pe locul l
int i; // variabila locala, memorata separat pentru fiecare apel
if (l <= k) { // conditie care "protejeaza"
for (i = a[l-1] + 1; i <= n - k + l; 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
write();
}
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
*/