Cod sursa(job #1493844)

Utilizator luca.boieruBoieru Luca luca.boieru Data 29 septembrie 2015 23:11:49
Problema Generare de permutari Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.86 kb
#include <stdio.h>

int     n;

int     is_valid(int stack[], int peak)
{
    for (int i = 0; i < peak; ++ i)
        if (stack[peak] == stack[i])
            return (0);
    return (1);
}

void    back(int stack[], int peak)
{
    for (int i = 1; i <= n; ++ i)
    {
        stack[peak] = i;
        if (is_valid(stack, peak))
        {
            if (peak == n - 1)
                for (int j = 0; j < n; ++ j)
                {
                    if (j == n - 1)
                        printf("%d\n", stack[j]);
                    else
                        printf("%d ", stack[j]);
                }
            else
                back(stack, peak + 1);
        }
    }
}

int     main(void)
{
    int     stack[10];
    
    freopen("permutari.in", "r", stdin);
    freopen("permutari.out", "w", stdout);
    scanf("%d", &n);
    back(stack, 0);
    return (0);
}