Cod sursa(job #2683928)

Utilizator Tudor_IIliescu Andrei-Tudor Tudor_I Data 12 decembrie 2020 11:22:34
Problema Problema Damelor Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
int n,nr,sol[500];
bool l[250],c[250],dp[500],ds[500];
void fil(int i, int j, int x)
{   l[i]=x;
    c[j]=x;
    dp[i-j+n]=x;
    ds[j+i]=x;
}
bool ver(int i, int j)
{   return !l[i]&&!c[j]&&!dp[i-j+n]&&!ds[j+i];
}
void bkt(int k,int i, int j)
{   if(j==n+1)
    {   if(sol[i])
        {   j=1;
            i++;
        }
        else
        {  return;
        }
    }
    if(i==n+1)
    {   nr++;
        if(nr==1)
        {   for(int l=1;l<=n;l++) g<<sol[l]<<' ';
            g<<'\n';
        }
        return;
    }

    if(ver(i,j))
    {   fil(i,j,1);
        sol[i]=j;
        bkt(k+1,i+1,1);
        sol[i]=0;
        fil(i,j,0);
        bkt(k,i,j+1);
    }
    else bkt(k,i,j+1);

}
int main()
{
    f>>n;
    bkt(1,1,1);
    g<<nr;
    return 0;
}