Cod sursa(job #1468424)

Utilizator mihaiadelinamihai adelina mihaiadelina Data 6 august 2015 00:44:29
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#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;
}