Cod sursa(job #1971390)

Utilizator BeatriceBBeatrice Roxana BeatriceB Data 20 aprilie 2017 13:11:19
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 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;
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)
{
    for(int i=1; i<=n; i++)
    {
        v[pas]=i;
        if(validare(pas))
        {
            if(pas==n)
            {
                cnt++;
                if(!gasit)
                    afisare(pas);
            }
            else bkt(pas+1);
        }
    }
}

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