Cod sursa(job #1456964)

Utilizator bulbulicaAlexandrescu Cristian bulbulica Data 2 iulie 2015 14:44:33
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.25 kb
#include <fstream>
//#include <iostream>
using namespace std;

ifstream fin("combinari.in");
ofstream fout("combinari.out");

int a[20], n, m; //, nrsol

void afisare() // afiseaza solutia
{
    for(int i = 1; i <= m; i++)
        fout << a[i] << ' ';
    fout << '\n';
}

bool valid(int k) // verifica daca numerele precedente
{                 // au fost asezate corect
    for(int i = 1; i < k; i++) // ex : 1 3 3
        if(a[k] <= a[i])    // a[2] == a[3] => return 0
            return false;   // daca era 1 3 4 => return 1
    return true;
}

void back(int k)
{
    if(k == m + 1) // daca avem atatea numere ca in cazul nostru
    {              // afisam solutia
        afisare();
        //++nrsol;
        return;
    }
    else           // daca nu intram pe back
    {
        for(int i = 1; i <= n; i++)
        {
            a[k] = i; // bagam numerele in vector
            if(valid(k) == true) // si le verificam la pasul acesta
            {                    // daca sunt corect pozitionate
                back(k + 1); // in functie de valid(), daca da,
            }           // intra pe back mai departe
        }
    }
}

int main()
{
    fin >> n >> m;
    back(1);
    //cout << nrsol;
    return 0;
}