Cod sursa(job #520992)

Utilizator cprodescuProdescu Corneliu-Claudiu cprodescu Data 10 ianuarie 2011 22:34:43
Problema Generare de permutari Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.88 kb
#include <stdio.h>
#include <stdlib.h>

int n;
int* to_print;
char* taken;
int len;

void read_data()
{
    scanf("%d", &n);
}

void print_one()
{
    int i;
    if (len == n)
    {
        for (i = 0; i < n; ++i)
            printf("%d ", to_print[i]);
        printf("\n");
    }
    else
    {
        for (i = 0; i < n; ++i)
        {
            if (!taken[i])
            {
                to_print[len] = i+1;
                taken[i] = 1;
                len++;
                print_one();
                len--;
                taken[i] = 0;
            }
        }
    }
}

void print_data()
{
    taken = calloc((n+1)*sizeof(char), 4);
    to_print = malloc(n*sizeof(int));
    len = 0;
    print_one();
    free(to_print);
    free(taken);
}


int main()
{
    freopen("permutari.in", "r", stdin);
    freopen("permutari.out", "w", stdout);

    read_data();
    print_data();
    return 0;
}