Cod sursa(job #871598)

Utilizator dantheroDan Terhesiu danthero Data 4 februarie 2013 22:07:21
Problema Combinari Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.9 kb
#include <stdio.h>
#include <stdlib.h>

#define MAX 19
unsigned int sol[MAX], used[MAX];
unsigned int n, k;
FILE *fin, *fout;

void printSol(unsigned int length)
{
    unsigned int i;
    for (i=1; i<=length; i++)
    {
        fprintf(fout, "%d ", sol[i]);
    }
    fprintf(fout, "\n");
}
void genSol(unsigned int step)
{
    unsigned int i;

    if (step == k+1)
    {
        printSol(k);
    }
    else
    {
        for (i=sol[step-1]+1; i<=n; i++)
        {
            if (!used[i])
            {
                used[i] = 1;
                sol[step] = i;
                genSol(step+1);
                used[i] = 0;
            }
        }
    }
}

int main()
{
    fin = fopen("combinari.in", "r");
    fout = fopen("combinari.out", "w");
    if (!fin || !fout || fscanf(fin, "%d %d", &n, &k) != 2)
    {
        return 1;
    }
    genSol(1);
    return 0;
}