Cod sursa(job #1922147)

Utilizator VladGhetinaVlad Ghetina VladGhetina Data 10 martie 2017 16:11:35
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <cstdio>
#include <cstring>

using namespace std;

#define IN "permutari.in"
#define OUT "permutari.out"

int k = 1 , n;
int fr[10],st[10];
bool OK ()

{
    int i;

    memset ( fr , 0 , sizeof(fr));

    for ( i = 1 ; i <= k ; i ++ )
        fr[st[i]] ++;

    for ( i = 1 ; i <= n ; i ++ )
        if ( fr[i] > 1 )
            return 0;

    return 1;
}

void Back()

{
    int i;

    while ( k > 0 )

    {
        if ( st[k] < n )
        {
            st[k] ++;

            if ( OK() )
            {
                if ( k == n )
                    {for ( i = 1 ; i <= n ; i ++ )
                    printf ( "%d " , st[i] );
                printf ("\n");}

                else

                {
                    k++ , st[k] = 0;
                }
            }
        }
        else k--;

    }

}

int main()
{
    freopen ( IN , "r" , stdin );
    freopen ( OUT , "w" , stdout );

    scanf ( "%d" , &n );

    Back();
}