Cod sursa(job #1118112)

Utilizator auRSTARHreapca Aurelian auRSTAR Data 24 februarie 2014 00:04:49
Problema Problema Damelor Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int Solution,SolutionNumber,V[100],n,Used[100],ok,up,down;
int IsValid(int nr,int pos)
{
	int up,down,ok=1;
	up=down=nr;
	for(int i=pos-1;i>=1 && ok;i--)
	{
		up++;down--;
		ok=V[i]!=up && V[i]!=down; //DeMorgan
	}
	return ok;
}
void back(int X)
{
	if(X==n+1)
	{
		SolutionNumber++;		
		if(!Solution)
		{
			for(int i=1;i<=n;i++)printf("%d ",V[i]);
			Solution=1;
		}
		return;
	}
	for(int i=1;i<=n;i++)
	{
		if(Used[i])continue;
		ok=1;
		up=down=i;
		for(int j=X-1;j>=1 && ok;j--)
		{
			up++;down--;
			ok=V[j]!=up && V[j]!=down; //DeMorgan
		}
		if(ok)
		{
			V[X]=i;
			Used[i]=1;
			back(X+1);
			Used[i]=0;
		}
	}
}
int main()
{
	freopen("damesah.in","r",stdin);
	freopen("damesah.out","w",stdout);
	scanf("%d",&n);
	back(1);
	printf("\n%d",SolutionNumber);
	return 0;
}