Cod sursa(job #2162806)

Utilizator AndreiBadescuBadescu Andrei-Octavian AndreiBadescu Data 12 martie 2018 14:13:23
Problema Problema Damelor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>

using namespace std;

ifstream fin ("damesah.in");
ofstream fout ("damesah.out");

int n, m, sol, v[13];
bool l[13], c[13], d1[25], d2[25];

void bt ( int k, int row )
{
	if ( k == n )
	{
		if ( !sol )
			for ( int i = 0; i < n; ++i )
				fout << v[i] + 1 << " ";

		++sol;
		return;
	}

	int i, j, t1, t2;

	for ( i = row + 1; i < n; ++i )
		if ( !l[i] ) /// level 1
			for ( j =0; j < n; ++j )
				if ( !c[j] ) /// level 2
				{
					t1 = i + j;
					if ( !d1[t1]) /// level 3
					{
						t2 = i + m - j;
						if ( !d2[t2] ) /// level 4
						{
                            l[i] = c[j] = d1[t1] = d2[t2] = 1;

                            v[i] = j;
                            bt ( k + 1, i );

                            l[i] = c[j] = d1[t1] = d2[t2] = 0;
						}
					}
				}
}

int main()
{
	fin >> n;
	m = n - 1;

	bt ( 0, -1 );

	fout << '\n' << sol;
}