Pagini recente » Cod sursa (job #921825) | Cod sursa (job #1465123) | Urmasii lui Moisil 2015, Clasament Clasele 11-12 | Cod sursa (job #915614) | Cod sursa (job #1123841)
#include <cmath>
#include <cstdio>
using namespace std;
int n, sol[1000], lin, ok, nr;
int d2[2014], d1[2014], col[2014];
int valid(int l, int c)
{
if(d1[l+c-1] ==1 || d2[n-c+l] ==1 || col[c]==1)
return 0;
return 1;
}
void afis()
{
for(int i=1; i<=n; i++)
printf("%d ", sol[i]);
}
void backt(int lin)
{
if(lin==n+1){
if(ok==0){
ok= 1;
afis();
printf("\n");
}
nr++;
return;
}
for(int i=1; i<=n; i++)
{
if(valid(lin, i))
{
sol[lin] = i;
d1[lin+i-1] =1;
d2[n-i+lin] =1;
col[i] =1;
backt(lin+1);
d1[lin+i-1] =0;
d2[n-i+lin] =0;
col[i] =0;
sol[lin] = 0;
}
}
}
int main()
{
freopen("damesah.in", "r", stdin);
freopen("damesah.out", "w", stdout);
scanf("%d", &n);
backt(1);
printf("%d", nr);
return 0;
}