Cod sursa(job #2002107)

Utilizator Neamtu_StefanStefan Neamtu Neamtu_Stefan Data 18 iulie 2017 17:53:00
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>

using namespace std;

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

int n,v[102],nrsol;

inline void init(int k)
{
    v[k]=0;
}

inline bool succesor(int k)
{
    if (v[k]<n)
    {
        v[k]++;
        return 1;
    }
    return 0;
}

inline bool valid(int k)
{
    for (int i=1;i<k;i++)
        if (v[k]==v[i] || k-i==v[k]-v[i] || k-i==v[i]-v[k])
            return 0;
    return 1;
}

inline bool sol(int k)
{
    return (k==n);
}

inline void afisare()
{
    for (int i=1;i<=n;i++)
        fout << v[i] << " ";
    fout << "\n";
}

inline void backtracking(int k)
{
    init(k);
    while (succesor(k))
        if (valid(k))
            if (sol(k))
            {
                if(!nrsol) afisare();
                nrsol++;
            }
            else backtracking(k+1);
}

int main()
{
    fin >> n;
    backtracking(1);
    fout << nrsol;
    return 0;
}