Cod sursa(job #2105593)

Utilizator dragos.galeteanu2001Dragos Iulian dragos.galeteanu2001 Data 13 ianuarie 2018 18:15:58
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#define limit 14

using namespace std;

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

int n, nr, queen[limit];
bool col[limit], main_diag[limit * 2], sec_diag[limit * 2];

void backtrack(int line, int n)
{
	int column;
	if (line == n) {
		if (nr < 1) {
			for (column = 0; column < n; column++)
				g << queen[column] + 1 << ' ';
			g << '\n';
		}
		nr++;
	}
	else {
		for (column = 0; column < n; column++) {
			if (!col[column] && !main_diag[column - line + n - 1] && !sec_diag[line + column]) {
				queen[line] = column;
				col[column] = main_diag[column - line + n - 1] = sec_diag[line + column] = true;
				backtrack(line + 1, n);
				col[column] = main_diag[column - line + n - 1] = sec_diag[line + column] = false;
			}
		}
	}
}

int main()
{
	f >> n;
	f.close();
	backtrack(0, n);
	g << nr;
	g.close();
    return 0;
}