Cod sursa(job #1472954)

Utilizator AlexandraaaaMereu Alexandra Alexandraaaa Data 18 august 2015 11:14:31
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("damesah.in");
ofstream g("damesah.out");

int n, p[14], v[14], dp[25], ds[25], nr;

int vezi(int i, int k){
	if (v[i]) return 0;
	if (dp[n + i - k]) return 0;
	if (ds[i + k - 1]) return 0;
	return 1;
}

void complet(int i, int k){
	v[i] = 1;
	p[k] = i;
	dp[n + i - k] = 1;
	ds[i + k - 1 ] = 1;
}

void gata(int i, int k){
	v[i] = 0;
	dp[n + i - k ] = 0;
	ds[i + k - 1 ] = 0;
}

void back(int k){
	int i;

	if (k == n){
		nr++;
		if (nr == 1){
			for (i = 1; i <= k; ++i)
				g << p[i]<<" ";
			g << "\n";
			return;
		}
	}

	k++;
	for (i = 1; i <= n; ++i) {
		if (vezi(i, k)) {
			complet(i, k);
			back(k);
			gata(i, k);
		}
	}
}

int main(){

	f >> n;

	back(0);

	g << nr;

	f.close();
	g.close();
	return 0;
}