Cod sursa(job #1185073)

Utilizator ducu34Albastroiu Radu Gabriel ducu34 Data 14 mai 2014 22:25:45
Problema Problema Damelor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include<fstream>
using namespace std;
ifstream fin("damele.in");
ofstream fout("damele.out");
int a[15][15],n,k,viz[15],x[15],No,m;
void tipar(int k)
{
	for(int i=1;i<=k;i++)
		fout<<x[i]<<" ";
	fout<<"\n";
	No=1;
}
int cond(int x,int y)
{
	int OK=1,i,j;
	i=x;j=y;
	while(OK)
	{
		if(i==0 || j==0)
			OK=0;
		else
		{
			i--;
			j--;
			if(a[i][j])
				return 0;
		}
	}
	OK=1;
	i=x;j=y;
	while(OK)
	{
		if(i==n || j==n)
			OK=0;
		else
		{
			i++;
			j++;
			if(a[i][j])
				return 0;
		}
	}
	i=x;j=y;OK=1;
	while(OK)
	{
		if(i==0 || j==n)
			OK=0;
		else
		{
			i--;
			j++;
			if(a[i][j])
				return 0;
		}
	}
	i=x;j=y;OK=1;
	while(OK)
	{
		if(i==n || j==0)
			OK=0;
		else
		{
			i++;
			j--;
			if(a[i][j])
				return 0;
		}
	}
	return 1;
}
void back(int k)
{
	for(int i=1;i<=n;i++)
	{
		if(!viz[i])
		{
			viz[i]=1;
			x[k]=i;
			a[k][x[k]]=1;
			if(cond(k,x[k]))
			{
				if(k==n)
					if(No==0)
						tipar(k);
					else
						m++;
				else
					back(k+1);
				viz[i]=0;
				a[k][x[k]]=0;
			}
			else
			{
				viz[i]=0;
				a[k][x[k]]=0;
			}
		}
	}
}
int main()
{
	fin>>n;
	No=0;
	back(1);
	fout<<m+1;
	return 0;
}