Cod sursa(job #804577)

Utilizator icb_mnStf Cic icb_mn Data 29 octombrie 2012 22:54:32
Problema Generare de permutari Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<cstdio>
#define NMAX 10
using namespace std;

short x[10];

inline int cond(short k)
{
    for(int i = 1; i < k; ++i)
        if(x[i] == x[k]) return 0;

    return 1;
}

inline void afis(int k)
{
    for(int i = 1; i <= k; ++i) printf("%d ", x[i]);
    printf("\n");
}

void back(int n)
{
    short k = 1;
    x[k] = 0;
    do
    {
        while(k < n + 1 && x[k] < n)
        {
            x[k]++;
            if(cond(k))
            {
                if(k == n) afis(k);
                else
                {
                    ++k;
                    x[k] = 0;
                }
            }
        }
        --k;
    }
    while(k);
}

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

    scanf("%d", &n);

    back(n);

    return 0;
}