Cod sursa(job #1443047)

Utilizator cristid9Cristi D cristid9 Data 26 mai 2015 18:30:54
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <cstdio>

void printUsedDigits(int used[], int size, FILE* fout)
{
    for(int i = 0; i < size; i++)
    {
        fprintf(fout, "%d ", used[i]);
    }
    fprintf(fout, "\n");
}

int contains(int used[], int size, int elem)
{
    for(int i = 0; i < size; i++)
    {
        if(used[i] == elem)
            return 1;
    }
    return 0;
}

void permute(int a[], int sizeA, int used[], int sizeUsed, FILE* fout)
{
    if(sizeA == sizeUsed)
    {
        printUsedDigits(used, sizeUsed, fout);
        return;
    }

    for(int i = 0; i < sizeA; i++)
    {
        if(!contains(used, sizeUsed, a[i]))
        {
            used[sizeUsed] = a[i];
            permute(a, sizeA, used, sizeUsed + 1, fout);
        }
    }
}

int main()
{
    FILE* fin  = fopen("permutari.in", "r");
    FILE* fout = fopen("permutari.out", "w");

    int n;
    int sequence[8];
    int used[8];

    fscanf(fin, "%d", &n);

    for(int i = 0; i < n; i++)
    {
        sequence[i] = i + 1;
    }

    permute(sequence, n, used, 0, fout);

    fclose(fin);
    fclose(fout);

    return 0;

}