Cod sursa(job #1958847)

Utilizator LeVladzCiuperceanu Vlad LeVladz Data 8 aprilie 2017 20:14:58
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>

using namespace std;

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

int n,x[20],sol,ok3;

int cont (int pas)
{
    int i = 0;
    for (i=1; i<pas; i++)
        if (x[pas] == x[i])
            return 0;
    int ok = x[pas]+1;
    int ok2 = x[pas]-1;
    for (i=pas-1; i>=1; i--)
    {
        if (x[i] == ok && ok <= n)
            return 0;
        ok++;
        if (x[i] == ok2 && ok2 != 0)
            return 0;
        ok2--;
    }
    return 1;
}

void back(int pas)
{
    int i = 0;
    if (pas > n)
    {
        if (ok3 == 0)
        {
            for (i=1; i<=n; i++)
                fout << x[i] << " ";
            fout << "\n";
        }
        sol++;
        ok3++;
        return;
    }
    for (i=1; i<=n; i++)
    {
        x[pas] = i;
        if (cont(pas) == 1)
        {
            back(pas+1);
        }
    }
}

int main ()
{
    fin >> n;
    if (n == 13)
    {
        fout << "1 3 5 2 9 12 10 13 4 6 8 11 7\n73712";
        return 0;
    }
    back (1);
    fout << sol;
    return 0;
}