Cod sursa(job #1614896)
Utilizator | Data | 26 februarie 2016 11:44:27 | |
---|---|---|---|
Problema | Problema Damelor | Scor | 50 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.81 kb |
#include<cstdio>
int n,pp,x;
int st[15],col[15],diag[15],diag2[15];
void back(int k)
{if(k==n+1)
{int i;
if(pp==0)
{for(i=1;i<=n;i++)
printf("%d ",st[i]);
printf("\n");
pp=1;
}
x++;
}
else
{int i;
for(i=1;i<=n;i++)
if(col[i]==0&&diag[i+k-1]==0&&diag2[k+n-i]==0)
{st[k]=i;
col[i]=1;
diag[i+k-1]=1;
diag2[k+n-i]=1;
back(k+1);
col[i]=0;
diag[i+k-1]=0;
diag2[k+n-i]=0;
}
}
}
int main ()
{freopen ("damesah.in","r",stdin);
freopen ("damesah.out","w",stdout);
scanf("%d",&n);
back(1);
printf("%d",x);
return 0;
}