Cod sursa(job #1251903)

Utilizator alexb97Alexandru Buhai alexb97 Data 29 octombrie 2014 23:59:41
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <algorithm>
using namespace std;

ifstream is("damesah.in");
ofstream os("damesah.out");

int n, x[20], cnt;

void Back(int k);
void Write();
bool Ok(int k);

int main()
{
    is >> n;
    Back(1);
    os << '\n' << cnt;
    is.close();
    os.close();
    return 0;
}

void Back(int k)
{
    if(k > n)
    {
        if(!cnt)
        {

            Write();
        }
        cnt++;
        return;
    }
    for(int i = 1; i <= n; ++i)
    {
        x[k] = i;
        if( Ok(k) )
        {
            Back(k+1);
        }
    }
}
void Write()
{
    for(int i =1; i <= n; ++i)
        os << x[i] << ' ';
    return;
}
bool Ok(int k)
{
    for(int j = 1; j < k; ++j)
    {
        if(x[k] == x[j]) return false;
        if(abs(x[k] - x[j]) == k - j) return false;
    }
    return true;
}