Cod sursa(job #2035586)

Utilizator Cristi_ChiraChira Cristian Cristi_Chira Data 9 octombrie 2017 17:29:13
Problema Problema Damelor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#define dm 15
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
bool lin[dm], d1[dm], d2[dm];
int n, c, nrperm, st[dm];
void afis()
{
    for(int i = 1; i <= n; i++)
        fout << st[i] << " ";
}
void dame(int niv)
{
    if( niv == n + 1  && !c)
    {
        afis();
        nrperm++, c++;
        return;
    }
    else if( niv == n + 1 && c)
    {
        nrperm++;
        return;
    }
    for( int j = 1; j <= n; j++)
    {
        if(!lin[j] && !d1[niv + j] && !d2[niv - j + n])
        {
            st[niv] = j;
            lin[j] = 1;
            d1[niv + j] = 1;
            d2[niv - j + n] = 1;
            dame(niv + 1);
            lin[j] = 0;
            d1[niv + j] = 0;
            d2[niv - j + n] = 0;
        }
    }
}
int main()
{
    fin >> n;
    dame(1);
    fout << "\n" << nrperm;
    return 0;
}