Cod sursa(job #1468492)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 6 august 2015 10:54:45
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

using namespace std;

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

int n, sol;
bool praf, Col[16], Diag1[32], Diag2[32]; // praf - se verifica daca prima varianta a fost afisata
int poz[16];

void genereaza(int k)
{
    if (k == n+1)
    {
        if (!praf)
        {
            for (int i = 1; i <= n; i++)
                g << poz[i] << " ";
            praf = true;
        }
        sol++;
    }
    else for (int i = 1; i <= n; i++)
        if (!Col[i] && !Diag1[n-k+i] && !Diag2[k+i-1])
        {
            poz[k] = i;
            Col[i] = Diag1[n-k+i] = Diag2[k+i-1] = true;
            genereaza(k+1);
            Col[i] = Diag1[n-k+i] = Diag2[k+i-1] = false;
        }
}

int main()
{
    f >> n;
    genereaza(1);
    g << "\n" << sol;
    return 0;
}