Pagini recente » Cod sursa (job #3193201) | Cod sursa (job #1228362) | Cod sursa (job #3173058) | Cod sursa (job #3285434) | Cod sursa (job #1590442)
#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;
}