Pagini recente » Cod sursa (job #639962) | Cod sursa (job #1586825) | Cod sursa (job #634229) | Cod sursa (job #1821507) | Cod sursa (job #1405438)
#include <stdio.h>
#include <stdlib.h>
int v[17],f[17],perm=0,fl=0,diag1[400],diag2[400];
void bkt(int k,int n,int p)
{
int i,j,g1,g2,x,y;
if(p>k){
perm++;
if(fl==0){
for(i=1; i<=k; i++)
printf("%d ",v[i]);
printf("\n");
fl=1;
}
}
else
{
for(v[p]=1; v[p]<=n; v[p]++)
{
x=p;
y=v[p];
while(x>1 && y>1)
x--,y--;
if(x==1)
g1=n+y-1;
else
g1=n-x+1;
x=p;
y=v[p];
while(x>1 && y<n)
x--,y++;
if(x==1)
g2=y;
else
g2=n+x-1;
if(f[v[p]]==0 && diag2[g2]==0 && diag1[g1]==0){
f[v[p]]=1;
diag1[g1]=1;
diag2[g2]=1;
bkt(k,n,p+1);
diag1[g1]=0;
diag2[g2]=0;
f[v[p]]=0;
}
}
}
}
int main()
{
int i,n;
freopen("damesah.in","r",stdin);
freopen("damesah.out","w",stdout);
scanf("%d",&n);
bkt(n,n,1);
printf("%d\n",perm);
return 0;
}