Cod sursa(job #2565427)

Utilizator LeVladzCiuperceanu Vlad LeVladz Data 2 martie 2020 14:13:03
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>

using namespace std;

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

int n,nr,ok,v[20],f[20];

int modul(int x)
{
    if (x < 0)
        return -x;
    return x;
}

int verif(int pas)
{
    int ok1 = 0;
    for (int i=pas-1; i>=1; i--)
        if (pas-i == modul(v[i]-v[pas]))
        {
            ok1 = 1;
            break;
        }
    if (ok1 == 1)
        return 0;
    return 1;
}

void back(int nivel)
{
    if (nivel == n+1)
    {
        if (ok == 0)
        {
            for (int i=1; i<=n; i++)
                fout << v[i] << " ";
            fout << "\n";
            nr++; ok = 1;
        }
        else
            nr++;
    }
    for (int i=1; i<=n; i++)
    {
        v[nivel] = i;
        if (f[i] == 0 && verif(nivel))
        {
            f[i] = 1;
            back(nivel+1);
            f[i] = 0;
        }
    }
}

int main()
{
    fin >> n;
    back(1);
    fout << nr;
    return 0;
}