Pagini recente » Borderou de evaluare (job #1609955) | Borderou de evaluare (job #1519459) | Borderou de evaluare (job #2487993) | Cod sursa (job #3202407) | Cod sursa (job #1096023)
#include <cstdio>
#include <cmath>
#include <iostream>
#include <fstream>
using namespace std;
#define NMAX 14
int ksol;
int sol[NMAX];
bool col[NMAX], main_diag[2 * NMAX], sec_diag[2 * NMAX];
void Back (int l, int n)
{
if (l == n)
{
if (ksol < 1)
{
for (int i = 0; i < n; ++i)
printf ("%d ", sol[i] + 1);
printf ("\n");
}
++ksol;
}
else
{
for (int i = 0; i < n; ++i)
{
if (!col[i] && !main_diag[i - l + n - 1] && !sec_diag[l + i])
{
sol[l] = i;
col[i] = main_diag[i - l + n - 1] = sec_diag[l + i] = true;
Back (l + 1, n);
col[i] = main_diag[i - l + n - 1] = sec_diag[l + i] = false;
}
}
}
}
int main ()
{
freopen ("damesah.in", "r", stdin);
freopen ("damesah.out", "w", stdout);
int n;
scanf ("%d", &n);
Back (0, n);
printf ("%d", ksol);
return 0;
}