Cod sursa(job #1959604)

Utilizator GabiTulbaGabi Tulba-Lecu GabiTulba Data 9 aprilie 2017 18:04:51
Problema Problema Damelor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>
#include <cmath>
#define MaxN 50
using namespace std;

FILE*IN,*OUT;

int N,Out[MaxN],Sol=0;
bool Col[MaxN],Diag1[MaxN],Diag2[MaxN],Shown=false;
void Back(int lvl)
{
	if(lvl==N+1)
	{
		Sol++;
		if(!Shown)
		{
			Shown=true;
			for(int i=1;i<=N;i++)
				fprintf(OUT,"%d ",Out[i]);
			fprintf(OUT,"\n");
		}
		return;
	}
	for(int i=1;i<=N;i++)
		if(!Col[i]&&!Diag1[lvl+i-1]&&!Diag2[N-lvl+i])
		{
			Out[lvl]=i;
			Col[i]=true,Diag1[lvl+i-1]=true,Diag2[N-lvl+i]=true;
			Back(lvl+1);
			Col[i]=false,Diag1[lvl+i-1]=false,Diag2[N-lvl+i]=false;
			Out[lvl]=0;
		}
}

int main()
{
	IN=fopen("damesah.in","r");
	OUT=fopen("damesah.out","w");

	fscanf(IN,"%d",&N);
	Back(1);
	fprintf(OUT,"%d\n",Sol);
	return 0;
}