Pagini recente » Cod sursa (job #1523217) | Cod sursa (job #2734210) | Cod sursa (job #3267881) | Cod sursa (job #311973) | Cod sursa (job #1123865)
#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){
for(int i=1; i<=n;)
printf("%d ", sol[i++]);
printf("\n");
}
ok++;
return;
}
for(int i=1; i<=n; i++)
{
if(d1[lin+i-1] ==0 && d2[n-i+lin] ==0 && col[i]==0)
{
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", ok);
return 0;
}