Cod sursa(job #2642966)

Utilizator Razvan48Capatina Razvan Nicolae Razvan48 Data 17 august 2020 23:13:42
Problema Problema Damelor Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>
#include <cmath>
using namespace std;

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

const int NMAX=13;
struct solutie
{
    int i;
    int j;
}sol[1+NMAX];

int n;
int nr_total_sol=0;
bool prima_sol=1;

bool verificare(int linie, int coloana,int index)
{
    bool ok=1;
    for(int q=1;q<=index-1 && ok;q++)
    {
        if(sol[q].i==linie || sol[q].j==coloana || abs(linie-sol[q].i)==abs(coloana-sol[q].j))
        {
            ok=0;
        }
    }
    return ok;
}

void back(int index)
{
    if(index>n)
    {
        if(prima_sol)
        {
            for(int i=1;i<=n;i++)
            {
                out<<sol[i].j<<' ';
            }
            out<<'\n';
            prima_sol=0;
        }
        nr_total_sol++;
    }
    else
    {
        for(int i=1;i<=n;i++)
        {
            if(verificare(index,i,index))
            {
                sol[index].i=index;
                sol[index].j=i;
                back(index+1);
            }
        }
    }
}

int main()
{
    in>>n;

    back(1);

    out<<nr_total_sol;

    return 0;
}