Cod sursa(job #2168471)

Utilizator Turturica_DorinTurturica Dorin Turturica_Dorin Data 14 martie 2018 11:08:00
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;
ifstream fin ("damesah.in");
ofstream fout ("damesah.out");

int fv[ 50 ], fv2[ 50 ], fv3[ 50 ], n, afi, st[ 20 ], k;

void backtr ( int nivel )
{
    int i;
    if ( nivel > n )
    {
        if ( afi == 0 )
        {
            k ++;
            afi = 1;
            for ( i = 1; i <= n; i++ )
            {
                fout << st[ i ] << ' ';
            }
            fout << '\n';
        }
        else
        {
            k ++;
        }
        return;
    }

    for ( i = 1; i <= n; i++ )
    {
        int x = nivel;
        int y = i;
        if ( fv[ 15 + ( x - y ) ] == 0 && fv2[ 15 + ( ( n - x ) + ( n - y ) ) ] == 0 && fv3[ y ] == 0 )
        {
            fv[ 15 + ( x - y ) ] = 1;
            fv2[ 15 + ( ( n - x ) + ( n - y ) ) ] = 1;
            fv3[ y ] = 1;
            st[ nivel ] = i;
            backtr ( nivel + 1 );
            fv[ 15 + ( x - y ) ] = 0;
            fv2[ 15 + ( ( n - x ) + ( n - y ) ) ] = 0;
            fv3[ y ] = 0 ;
            st[ nivel ] = 0;
        }
    }
}

int main ()
{
    fin>> n;
    backtr ( 1 );
    fout << k;
}