Cod sursa(job #2296511)

Utilizator AnduRazvanMindrescu Andu AnduRazvan Data 4 decembrie 2018 19:04:08
Problema Problema Damelor Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>

using namespace std;

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

int x[14],n,nr;
int Test(int k)
{
    for(int i=1;i<=k-1;i++)
        if(x[k]==x[i]) return 0;
    int cx=k-1;
    int cy=x[k]-1;
    // cautare dama NORD-VEST
    while( cx>0 && cy>0 )
    {
        if(x[cx]==cy) return 0;
        cx--;
        cy--;
    }

    // cautare dama NORD-EST
    cx=k-1;
    cy=x[k]+1;
    while( cx>0 && cy<=n )
    {
        if(x[cx]==cy) return 0;
        cx--;
        cy++;
    }
 return 1;
}
void Afisare()
{
    for(int i=1;i<=n;i++)
        fout<<x[i]<<" ";
}
void Back(int k)
{
    for(int i=1;i<=n;i++)
    {
        x[k]=i;
        if(Test(k)==1)
         {
                if(k==n) {
                          if(nr==0) {Afisare();nr++;}
                          else nr++;
                         }
                else Back(k+1);
         }
         x[k]=0;
    }
}
int main()
{
    fin>>n;
    Back(1);
        fout<<"\n"<<nr;
    return 0;
}