Cod sursa(job #590390)

Utilizator ukiandreaAndreea Lucau ukiandrea Data 17 mai 2011 11:17:39
Problema Generare de permutari Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.87 kb
#include <stdio.h>
#include <stdlib.h>

void print_perm(int *a, int len)
{
    int i;

    for (i = 0; i < len; i++)
        printf("%d ", a[i]);
    printf("\n");
}

int valid_perm(int *a, int len, int index)
{
    int i;

    for (i = 0; i < index; i++)
    {
        if (a[i] != a[index])
            continue;
        return 0;
    }

    return 1;
}

void permut(int *a, int len, int index)
{
    int i;

    if (index == len)
        print_perm(a, len);
    else
    {
        for (i = 1; i <= len; i++)
        {
            a[index] = i;
            if (valid_perm(a, len, index))
                permut(a, len, index + 1);
        }
    }
}

int main()
{
    int n = -1, *a = NULL;

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

    scanf("%d", &n);

    a = (int*)calloc(n, sizeof(int));

    permut(a, n, 0);

    free(a);

    return 0;
}