Cod sursa(job #2305319)

Utilizator anca.sotirAnca Sotir anca.sotir Data 19 decembrie 2018 21:30:27
Problema Problema Damelor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>

using namespace std;

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

int n;
int stiva[15];
int frcol[15];
int frdp[30];
int frds[30];
int ans;


int dame(int niv)
{
    for(int i=1; i<=n; ++i)
    {
        stiva[niv]=i;
        frcol[i]++;
        frds[i+niv]++;
        frdp[i-niv+n]++;
        int ok=1;
        if(frcol[i]>1 || frds[i+niv]>1 || frdp[i-niv+n]>1)
            ok=0;
        if(!ok)
        {
            frcol[i]--;
            frds[niv+i]--;
            frdp[i-niv+n]--;
            continue;
        }
        if(niv<n)
            dame(niv+1);
        else
        {
            ans++;
            if(ans==1)
            {
                for(int i=1;i<=n;++i)
                    g<<stiva[i]<<' ';
                g<<'\n';
            }
        }
        frcol[i]--;
        frds[niv+i]--;
        frdp[i-niv+n]--;
    }
}

int main()
{
    f>>n;
    dame(1);
    g<<ans;

    return 0;
}