Cod sursa(job #1169238)

Utilizator japjappedulapPotra Vlad japjappedulap Data 10 aprilie 2014 18:49:53
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
using namespace std;

ifstream is ("combinari.in");
ofstream os ("combinari.out");

int n, k;
int C[15];

void BACKTRACK(int i);
void Out();
bool Valid(int i);

int main()
{
    is >> n >> k;
    BACKTRACK(1);

    is.close();
    os.close();
    return 0;
}

void BACKTRACK(int i)
{
    bool Ok = 1;
    if (i == k+1)
        Out();
    else
        for (int j = 1; j <= n; ++j)
        {
            C[i] = j;
            if (Valid(i)) BACKTRACK(i+1);
        }
};

void Out()
{
    for (int j = 1; j <= k; ++j) os << C[j] << ' ';
    os << '\n';
};

bool Valid(int i)
{
    for (int j = 1; j < i; ++j)
        if (C[j] == C[i]) return 0;
    for (int j = 1; j < i; ++j)
        if (C[j] > C[j+1]) return 0;
    return 1;
};