Cod sursa(job #2653072)

Utilizator SergiuS3003Sergiu Stancu Nicolae SergiuS3003 Data 26 septembrie 2020 19:40:31
Problema Generare de permutari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ( "permutari.in" );
ofstream g ( "permutari.out" );
int v[10], n;
bool afis()
{
    for ( int i = 1; i <= n; i++ )
        g << v[i] << ' ';

    g << '\n';
}
bool valid ( int x )
{
    for ( int i = 1; i < x; i++ )
        if ( v[i] == v[x] )
            return 0;

    return 1;
}
void backt ( int k )
{
    if ( k <= n )
        for ( int i = 1; i <= n; i++ )
        {
            v[k] = i;

            if ( valid ( k ) )
                backt ( k + 1 );
        }
    else
        if ( valid ( k ) )
            afis();
}
void backt()
{
    int k = 1;
    v[1] = 0;

    while ( k )
    {
        if ( v[k] < n )
        {
            v[k]++;

            if ( valid ( k ) )
            {
                if ( k == n )
                    afis();
                else v[++k] = 0;
            }
        }
        else k--;
    }
}
int main()
{
    f >> n;
    backt ();
    return 0;
}