Cod sursa(job #1185224)

Utilizator PlatenitesVoicu Cristian Platenites Data 15 mai 2014 11:00:12
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>

using namespace std;

ifstream f("damesah.in");
ofstream g("damesah.out");
int m[14][14],viz[15],x[15],l,c,n,nr;
void tipar(int k)
{
	nr++;
	if(nr==1)
	{
		for(int i=1;i<=k;i++)
			g<<x[i]<<" ";
		g<<endl;
	}
}
int cont (int x, int y)
{
	l=x;c=y;
	for(int i=l+1;i<=n;i++)
	{
		c--;
		if(c<1)
			break;
		if(m[i][c]!=0)
			return 0;
	}
	l=x;c=y;
	for(int i=l+1;i<=n;i++)
	{
		c++;
		if(c>n)
			break;
		if(m[i][c]!=0)
			return 0;
	}
	l=x;c=y;
	for(int i=x-1;i>=1;i--)
	{
		c++;
		if(c>n)
			break;
		if(m[i][c]!=0)
			return 0;
	}
	l=x;c=y;
	for(int i=x-1;i>=1;i--)
	{
		c--;
		if(c<1)
			break;
		if(m[i][c]!=0)
			return 0;
	}
	return 1;
}
void back(int k)
{
	for(int i=1;i<=n;i++)
	{
		if(viz[i]==0)
		{
			viz[i]=1;
			x[k]=i;
			m[k][x[k]]=1;
			if(cont(k,x[k]))
				if(k==n)
					tipar(k);
				else
					back(k+1);
			viz[i]=0;
			m[k][x[k]]=0;
		}
	}
}
int main ()
{
	f>>n;
	back(1);
	g<<nr;
	return 0;
}