Cod sursa(job #1590444)

Utilizator claudiumihailClaudiu Mihail claudiumihail Data 5 februarie 2016 05:39:39
Problema Problema Damelor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.38 kb
#include <fstream>
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
#include <bitset>
#include <cmath>

using namespace std;

static constexpr size_t maxN()
{
    return 14;
}

int vQueenPositions[maxN()];

int numSol = 0;

fstream fout("damesah.out", fstream::out);

static void solveQueens(int n, int numQueens)
{
    if (numQueens == n)
    {
        if (numSol ==  0)
        {
            for (int i=0; i<numQueens; ++i)
            {
                fout << vQueenPositions[i] + 1 << " ";
            }
            fout << std::endl;
        }
        numSol ++;
        return;
    }

    //int i = numQueens - 1;
    for (int j=0; j<n; ++j)
    {
        /*bool isSafe = true;
        for (int p=0; p<numQueens; ++p)
        {
            if (vQueenPositions[p] == j || abs(p - numQueens) == abs(vQueenPositions[p] - j))
            {
                isSafe = false;
                break;
            }
        }*/
        
        //if (isSafe)
        {
            vQueenPositions[numQueens] = j;
            solveQueens(n, numQueens + 1);
            vQueenPositions[numQueens] = 0;
        }
    }
}

int main()
{
    fstream fin("damesah.in", fstream::in);
    
    int n;
    fin >> n;
    //cout << n << std::endl;
    
    solveQueens(n, 0);
    fout << numSol << std::endl;
    
    return 0;
}