Pagini recente » Cod sursa (job #2617633) | Cod sursa (job #208813) | Cod sursa (job #1834348) | Cod sursa (job #2889717) | Cod sursa (job #1992093)
#include <iostream>
#include <fstream>
using namespace std;
const int nMax = 20;
ifstream in("damesah.in");
ofstream out("damesah.out");
int n;
int rasp;
bool vizCol[nMax];
bool vizDiagPrinc[2 * nMax];
bool vizDiagSec[2 * nMax];
int pos[nMax];
void backtr(int d)
{
if(d == n + 1)
{
if(rasp == 0)
for(int i = 1; i <= n; ++i)
out << pos[i] << " ";
++rasp;
return;
}
for(int i = 1; i <= n; ++i)
if(!vizCol[i] && !vizDiagPrinc[d+i] && !vizDiagSec[d-i+n])
{
vizCol[i] = vizDiagPrinc[d+i] = vizDiagSec[d-i+n] = true;
pos[d] = i;
backtr(d + 1);
vizCol[i] = vizDiagPrinc[d+i] = vizDiagSec[d-i+n] = false;
}
}
int main()
{
in >> n;
backtr(1);
out << "\n" << rasp;
return 0;
}