Pagini recente » Cod sursa (job #3126735) | Cod sursa (job #3041763) | Cod sursa (job #2129947) | Cod sursa (job #2334637) | Cod sursa (job #1468424)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("combinari.in");
ofstream fout ("combinari.out");
int v[20], k, n;
// Afiseaza primele k elemente ale vectorului v;
void write() {
for (int i = 1; i <= k; i++) {
fout << v[i] << " ";
}
fout << "\n";
}
/*
n = 4, k = 2;
b(1) [1]
b(1) -> b(2) [1, 2]
b(1) -> b(2) -> b(3) [1, 2] ~ 1 2
b(1) -> b(2) [1, 3]
b(1) -> b(2) -> b(3) [1, 3] ~ 1 3
b(1) -> b(2) [1, 4]
b(1) -> b(2) -> b(3) [1, 4] ~ 1 4
b(1) -> b(2)
b(1) [2]
b(1) -> b(2) [2, 3]
b(1) -> b(2) -> b(3) [2, 3] ~ 2 3
b(1) -> b(2) [2, 4]
b(1) -> b(2) -> b(3) [2, 4] ~ 2 4
b(1) -> b(2)
b(1) [3]
b(1) -> b(2) [3, 4]
b(1) -> b(2) -> b(3) [3, 4] ~ 3 4
b(1) -> b(2)
b(1) [4]
b(1) -> b(2)
b(1)
*/
void backtracking(int pas) {
int i;
if (pas <= k) {
for (i = v[pas - 1] + 1; i <= n; i++) {
v[pas] = i;
backtracking(pas + 1);
}
}
else {
write();
}
}
int main() {
fin >> n >> k;
backtracking(1);
return 0;
}