Cod sursa(job #1096023)

Utilizator pulseOvidiu Giorgi pulse Data 1 februarie 2014 14:09:44
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#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;
}