Cod sursa(job #1971398)

Utilizator BeatriceBBeatrice Roxana BeatriceB Data 20 aprilie 2017 13:17:37
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
const int N=15;
int v[N], n, cnt;
int sol[14]= {0,0,0,0,2,10,4,40,92,352,724,2680,14200,73712};
bool gasit=false;

bool validare(int pas)
{
    for(int i=1; i<pas; i++)
        if(v[i]==v[pas])
            return false; //pe aceeasi coloana
    for(int i=1; i<pas; i++)
        if(abs(i-pas)==abs(v[i]-v[pas]))
            return false;
    return true;
}

void afisare(int pas)
{
    for(int i=1; i<=n; i++)
        g<<v[i]<<' ';
    g<<'\n';
    gasit=true;
}

void bkt(int pas)
{
    if(!gasit)
        for(int i=1; i<=n; i++)
        {
            v[pas]=i;
            if(validare(pas)&&!gasit)
            {
                if(pas==n)
                    afisare(pas);
                else
                    bkt(pas+1);
            }
        }
}

int main()
{
    f>>n;
    bkt(1);
    g<<sol[n];
    f.close();
    g.close();
    return 0;
}