Cod sursa(job #1390115)

Utilizator mircea.dobreanuMircea Dobreanu mircea.dobreanu Data 16 martie 2015 21:11:28
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <cmath>
#include <fstream>
using namespace std;

ifstream fin("damesah.in");
ofstream fout("damesah.out");
int n, res, v[15];
bool firstSolution = false;

void writeSolution()
{
	for (int i = 1; i <= n; ++i)
		fout << v[i] << ' ';
	fout << '\n';
}

bool isValid(int k)
{
	for (int i = 1; i < k; ++i)
		if (k - i == abs(v[k] - v[i]) || v[k] == v[i])
			return false;
	return true;
}

void bkt(int k)
{
	if (k == n + 1)
	{
		++res;
		if (!firstSolution)
		{
			firstSolution = true;
			writeSolution();
		}
	}
	else
	{
		for (int i = 1; i <= n; ++i)
		{
			v[k] = i;
			if (isValid(k))
				bkt(k + 1);
			v[k] = 0;
		}
	}
}

int main()
{
	fin >> n;	
	bkt(1);
	fout << res << '\n';
	return 0;
}