Cod sursa(job #1283500)

Utilizator TeodorescuStefanEduardTeodorescu Stefan Eduard TeodorescuStefanEduard Data 5 decembrie 2014 19:35:08
Problema Combinari Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <fstream>
#define R 1999999973
using namespace std;
fstream in("combinari.in",ios::in);
fstream out("combinari.out",ios::out);

int n,k,a[20]={};

int solutie(int x)
{
    int p=1,i;
    if(x==k+1)
        return 1;
    for(i=1;i<=k;i++)
    {
        if(a[i]==0)
            p=0;
        if(i==x)
            i++;
        if(a[i]==a[x])
            p=0;
    }
    return p;
}

void afisare()
{
    for(int i=1;i<=k;i++)
        out<<a[i]<<" ";
    out<<"\n";
}

int incrementabil(int x)
{
    int i;
    if(a[x]<n)
    {
        for(i=x+1;i<=k;i++)
            if(a[x]+1==a[i])
                return 0;
        a[x]++;
        return 1;
    }
    else
        return 0;
}

int valid(int x)
{
    int p=1,i;
    for(i=1;i<x;i++)
        if(a[i]==a[x])
            p=0;
    return p;
}

void back(int x)
{
    if(solutie(x))
        afisare();
    else
    {
        while(incrementabil(x))
            if(valid(x))
                back(x+1);
    }
}

int main()
{

in>>n>>k;
in.close();
back(1);
out.close();

return 0;
}