Cod sursa(job #1442957)

Utilizator cristid9Cristi D cristid9 Data 26 mai 2015 16:24:30
Problema Generare de permutari Scor 20
Compilator c Status done
Runda Arhiva educationala Marime 0.88 kb
#include <stdio.h>

#define N 8

void swap(int* a, int i, int j)
{
    int tmp = a[i];
    a[i]    = a[j];
    a[j]    = tmp;
}

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

void permute(int* a, int size, int start, FILE* fout)
{
    if(start == size)
    {
        printPermutation(a, size, fout);
        return;
    }

    for(int i = start; i < size; i++)
    {
        swap(a, i, start);
        permute(a, size, start + 1, fout);
        swap(a, i, start);
    }
}

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

    int n;
    int v[N];

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

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

    permute(v, n, 0, fout);

    fclose(fin);
    fclose(fout);

    return 0;
}