Cod sursa(job #1242706)

Utilizator sperantaVio Alexa speranta Data 14 octombrie 2014 21:47:09
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <cstdlib>
using namespace std;

ifstream is("damesah.in");
ofstream os("damesah.out");

int n, sol[15], lin[15], diag[50], dsec[50], nrsol;

void Gen( int k );
bool Valid( int k );
void Write( int k );

int main()
{
    is >> n;
    Gen(1);
    os << nrsol;
    is.close();
    os.close();
    return 0;
}

void Gen( int k )
{
    if ( k - 1 == n )
    {
        nrsol++;
        if ( nrsol == 1 )
            Write(k-1);
        return;
    }
    for ( int i = 1; i <= n; i++ )
        if ( !lin[i] && !diag[n + k - i + 1] && !dsec[i + k - 1] )
        {
            sol[k] = i;
            lin[i] = true;
            diag[n + k - i + 1] = true;
            dsec[i + k - 1] = true;
            Gen( k + 1 );
            lin[i] = false;
            diag[n + k - i + 1] = false;
            dsec[i + k - 1] = false;
        }
}

void Write( int k )
{
    for ( int i = 1; i <= k; i++ )
        os << sol[i] << ' ';
    os << '\n';
}