Cod sursa(job #1486947)

Utilizator o_micBianca Costin o_mic Data 15 septembrie 2015 19:32:14
Problema Problema Damelor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
#include <vector>
#define DN 15
using namespace std;

int ok;
int col[DN], diag1[DN], diag2[DN], sol[DN];
ifstream fin("damesah.in");
ofstream fout("damesah.out");

int find_sol(int n, int k) {
	if(n == k){
		if(!ok){
			for(int i = 0; i < n; ++i)
				cout << sol[i] << " ";
			cout << '\n';
			ok = 1;
		}
		return 1;
	}
	int res = 0;
	for(int i = 0; i < n; ++i)
		if(!col[i] && !diag1[n + k - i] && !diag2[i+k]){
			col[i] = 1;
			diag1[n + k - i] = 1;
			diag2[i+k] = 1;
			sol[k] = i+1;
			res += find_sol(n, k+1);
			col[i] = 0;
			diag1[n + k - i] = 0;
			diag2[i+k] = 0;
		}
	return res;
}

int main() {
	int n;
	cin >> n;
	ok = 0;
	cout << find_sol(n, 0);
	return 0;
}