Cod sursa(job #1094140)

Utilizator vyrtusRadu Criuleni vyrtus Data 28 ianuarie 2014 22:20:55
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#include <iostream>

#define maxn 14
using namespace std;

ifstream f("damesah.in");
ofstream g("damesah.out");

long n,m = 0;
int a[maxn];
bool ok = false;
bool col[maxn] , sec_diag[maxn*2] , main_diag[maxn*2];

 void generare(int k)
 {
     if (k == n)
     {
         if (!ok)
         {
             for(int i=0;i<n;i++) g << a[i] + 1 << " " ;
                    ok =true;
         }
       m++;
     }
      else
      {
        for (int i=0;i<n;i++)
        {
            if (!col[i] && !sec_diag[i + k - 1] && !main_diag[i - k + n - 1] )
            {
                 a[k] = i;
                 col[i] = sec_diag[i+k-1] = main_diag[i-k+n-1] = true;
                 generare(k+1);
                 col[i] = sec_diag[i+k-1] = main_diag[i-k+n-1] = false;
            }
        }
      }
 }

int main()
{
    f >> n;
    generare(0);

        g << "\n";
    g << m << "\n";


    return 0;
}