Cod sursa(job #2925799)

Utilizator alexandrubilaBila Alexandru-Mihai alexandrubila Data 16 octombrie 2022 08:10:42
Problema Problema Damelor Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;

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

int x[10];
int n;
int nrSol;

void afisare()
{
    nrSol++;
    for (int i = 1 ; i <= n ; i++)

        for (int j = 1 ; j <= n ; j++)
            if (x[i] == j)
                g << j << " ";
    g << endl;
}

int valid(int k)
{
    for(int i = 1 ; i < k ; i++)
    {
        if(x[i] == x[k])
            return false;
        ///conditia suplimentara la regine fata de ture
        if (abs(x[k] - x[i]) == k - i)
            return false;
    }
    return true;
}

void bt(int k)
{
    for(int i = 1 ; i <= n ; i++)
    {
        x[k] = i;
        if(valid(k) == true)
        {
            if(k == n)
            {
                    if (nrSol == 0)
                        afisare();
                    else nrSol++;

            }
            else bt(k + 1);
        }
    }
}

int main()
{
    f >> n;
    bt(1);
    g << nrSol;
    return 0;
}