Pagini recente » Cod sursa (job #3238944) | Cod sursa (job #1210311) | Cod sursa (job #1871619) | Cod sursa (job #134265) | Cod sursa (job #1118107)
#include<cstdio>
#include<algorithm>
using namespace std;
int Solution,SolutionNumber,V[100],n,Used[100];
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;
if(IsValid(i,X))
{
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;
}