Cod sursa(job #1416685)

Utilizator paul_danutDandelion paul_danut Data 8 aprilie 2015 18:57:29
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <fstream>
#include <iostream>
using namespace std;


ifstream f("damesah.in");
ofstream g("damesah.out");
int a[15],check[15],n;
int dp[30],ds[30],l[15],c[15],nr=0;

void back(int k)
{
    int i,e;
    if(k<=n)                                  ///k-linia    ///a[k]-coloana
       for(i=1;i<=n;i++)
            {if(check[i]==0)
               {
                a[k]=i;
                if(k<i)
                    e=n+(i-k)+1;
                else
                    e=k-i+1;
                if( l[k]==0 && c[i]==0 && ds[k+i]==0 && dp[e]==0 )
                   {l[k]=1;    c[i]=1;    ds[k+i]=1;    dp[e]=1;
                    a[k]=i;    check[i]=1;
                    back(k+1); check[i]=0;
                    l[k]=0;    c[i]=0;    ds[k+i]=0;    dp[e]=0;}
                }}
    else
        {
            if(nr==0)
                {for(i=1;i<=n;i++)
                    g<<a[i]<<' ';
                g<<'\n';}
            nr++;}
}



int main()
{
    int i;

    f>>n;
    for(i=1;i<=14;i++)
        {check[i]=0;
        a[i]=0;
        l[i]=0;
        c[i]=0;}
    for(i=1;i<=29;i++)
        {ds[i]=0;
        dp[i]=0;}
    back(1);
    g<<nr;

    f.close(); g.close();
}