Cod sursa(job #3139020)

Utilizator SSKMFSS KMF SSKMF Data 24 iunie 2023 10:58:20
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.29 kb
#include <fstream>
using namespace std;

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

int lungime , tabla[14][14] , ocupat[3][30] , pozitii[14] , modalitati;

void Afisare ()
{
    for (int indice = 1 ; indice <= lungime ; indice++)
        cout << pozitii[indice] << ' ';
    cout << '\n';
}

bool Valid (int linie , int coloana)
{
    if (ocupat[0][coloana])
        return false;

    if (ocupat[1][lungime + linie - coloana])
        return false;

    if (ocupat[2][linie + coloana - 1])
        return false;

    return true;
}

void Backtracking (int linie)
{
    for (int coloana = 1 ; coloana <= lungime ; coloana++)
        if (Valid(linie , coloana))
        {
            pozitii[linie] = coloana;
            ocupat[0][coloana] = ocupat[1][lungime + linie - coloana] = ocupat[2][linie + coloana - 1] = 1;
            if (linie == lungime && ++modalitati == 1)
                Afisare();
            else
                if (linie < lungime)
                    Backtracking(linie + 1);

            ocupat[0][coloana] = ocupat[1][lungime + linie - coloana] = ocupat[2][linie + coloana - 1] = 0;
        }
}

int main ()
{
    cin >> lungime;
    Backtracking(1);
    cout << modalitati;
    cout.close(); cin.close();
    return 0;
}