Cod sursa(job #1096394)

Utilizator sebinechitasebi nechita sebinechita Data 1 februarie 2014 22:29:08
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
#define MAX 15

int a[MAX], diag[2*MAX], linii[MAX], n, s, diag2[2*MAX];
bool x;

void backt(int k)
{
    if(k==n+1)
    {
        s++;
        if(x)
        {
            for(int i=1;i<=n;i++)
            {
                fout<<a[i]<<" ";
            }
            fout<<"\n";
            x=0;
        }
    }
    else
    {
        for(int i=1;i<=n;i++)
        {
            a[k]=i;
            if(!linii[i] && !diag[MAX+i-k] && !diag2[i+k])
            {
                diag2[i+k]=1;
                linii[i]=1;
                diag[MAX+i-k]=1;
                backt(k+1);
                linii[i]=0;
                diag[MAX+i-k]=0;
                diag2[i+k]=0;
            }
        }
    }
}

int main()
{
    fin>>n;
    x=1;
    backt(1);
    fout<<s<<"\n";
}