Cod sursa(job #1676818)

Utilizator RazzinnatorRazvan Brinzea Razzinnator Data 6 aprilie 2016 10:25:15
Problema Combinari Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("combinari.in");
ofstream g("combinari.out");

int sol[20];

void printSol(int k) {
    for (int i = 0; i < k; i++) {
        g << sol[i] << " ";
    }
    g << endl;
}

void back(int n, int k, int p) {
    // Daca am ajuns la o solutie, o afisam.
    if (p == k) {
        printSol(k);
        return;
    }

    // Altfel, trebuie sa plasam pe pozitia k toate
    // numerele mai mari decat cel de pe pozitia k-1
    int prev;
    if (p == 0) prev = 0;
    else prev = sol[p-1];

    for (int i = prev + 1; i <= n; i++) {
        sol[p] = i;
        back(n, k, p+1);
    }
}

int main()
{
    int n, k;
    f >> n >> k;

    back(n, k, 0);

    f.close();
    g.close();
    return 0;
}