Cod sursa(job #2653535)

Utilizator Razvan48Capatina Razvan Nicolae Razvan48 Data 28 septembrie 2020 14:08:14
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <fstream>

using namespace std;

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

const int NMAX = 13;
int n;
int sol[1 + NMAX];
int nr_sol;

bool gasit;

bool coloana[1 + NMAX];
bool diagonala1[2 * NMAX];
bool diagonala2[2 * NMAX];

void generare(int index)
{
    if (index > n)
    {
        if (!gasit)
        {
            gasit = true;
            for (int i = 1; i <= n; i++)
            {
                out << sol[i] << ' ';
            }
            out << '\n';
        }
        nr_sol++;
    }
    else
    {
        for (int i = 1; i <= n; i++)
        {
            if (!coloana[i] && !diagonala1[n - i + index] && !diagonala2[n - index + n - i])
            {
                coloana[i] = true;
                diagonala1[n - i + index] = true;
                diagonala2[n - index + n - i] = true;
                sol[index] = i;
                generare(index + 1);
                coloana[i] = false;
                diagonala1[n - i + index] = false;
                diagonala2[n - index + n - i] = false;
            }
        }
    }
}

int main()
{
    in >> n;

    generare(1);

    out << nr_sol;

    return 0;
}