Cod sursa(job #1922822)

Utilizator nicu_serteSerte Nicu nicu_serte Data 10 martie 2017 19:04:28
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int n, st[15], nrsol=0, vizcol[15], vdiag1[2*15], vdiag2[2*15];
void solutie()
{
    nrsol++;
    if(nrsol==1)
        for(int i=1; i<=n; i++)
            fout<<st[i]<<' ';
}
bool valid(int k)
{
    if(vizcol[st[k]] || vdiag1[k+st[k]-1] || vdiag2[k-st[k]+n-1])
        return false;
    return true;
}
void bt(int k)
{
    for(int i=1; i<=n; i++)
    {
        st[k]=i;
        if(valid(k))
        {
            vizcol[st[k]]=vdiag1[k+st[k]-1]=vdiag2[k-st[k]+n-1]=1;
            if(k<n)
                bt(k+1);
            else solutie();
            vizcol[st[k]]=vdiag1[k+st[k]-1]=vdiag2[k-st[k]+n-1]=0;
        }
    }
}
int main()
{
    fin>>n; fin.close();
    bt(1);
    fout<<'\n';
    fout<<nrsol<<'\n';
    fout.close();
    return 0;
}