Cod sursa(job #884953)

Utilizator radutrestianRadu Trestian radutrestian Data 21 februarie 2013 15:16:21
Problema Combinari Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include<stdio.h>
FILE *in,*out;
using namespace std;
int st[101],n,k;
void back(int pos);
bool valid(int pos);
void afisare(int pos);
int main()
{
    in=fopen("combinari.in","rt");
    out=fopen("combinari.out","wt");
    fscanf(in,"%d",&n);
    fscanf(in,"%d",&k);
    back(1);
    fclose(in);
    fclose(out);
    return 0;
}

void back (int pos)
{
    int i,j;
    for(i=1;i<=n;i++)
    {
        st[pos]=i;
        //j=0;
        {
            //j++;
            if(valid(pos) /*j<=k*/)
            {
                if(pos==k)
                afisare(pos);
                else
                back(pos+1);
            }
        }
    }
}

bool valid(int pos)
{
    int j;
    for (j=1;j<pos;j++)
    {
        if(st[pos]==st[j])
        return false;
    }
    return true;
}

void afisare(int pos)
{
    for(int i=1;i<=pos;i++)
    {
        fprintf(out,"%d ",st[i]);
    }
    fprintf(out,"\n");
}