Pagini recente » Cod sursa (job #440003) | Cod sursa (job #2012917) | Cod sursa (job #1386232) | Cod sursa (job #1179766) | Cod sursa (job #2005934)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
int *x, n, nrsol = 0;
const int MAX_N = 14;
bool col[MAX_N], diagp[MAX_N * 2], diags[MAX_N * 2];
ifstream f("damesah.in");
ofstream g("damesah.out");
void afis(int x[], int n)
{
for(int i = 1; i <= n; i++)
g << x[i] << ' ';
g << '\n';
}
void backt(int l, int n)
{
if(l > n)
{
if(nrsol == 0)
afis(x,n);
nrsol++;
}
else
{
for(int c = 1; c <= n; c++)
{
if(!col[c] && !diagp[c - l + n - 1] && !diags[l + c])
{
x[l] = c;
col[c] = diagp[c - l + n - 1] = diags[l + c] = 1;
backt(l + 1, n);
col[c] = diagp[c - l + n - 1] = diags[l + c] = 0;
}
}
}
}
int main()
{
f >> n;
x = new int [n + 1];
backt(1, n);
g << nrsol;
return 0;
}