Pagini recente » Cod sursa (job #2964366) | Cod sursa (job #2877211) | Cod sursa (job #676881) | Cod sursa (job #2583991) | Cod sursa (job #2344764)
#include <cstdio>
using namespace std;
int n,sol,q[16];
bool col[30],dp[32],ds[32];
void afisare(int x)
{
int i;
for(i=0; i<x; i++) printf("%d ",q[i]+1);
printf("\n");
}
void BKT(int k)
{
int i,ok;
if(k == n)
{
sol++;
if(sol <= 1)
afisare(n);
}
else
{
for(i=0; i<n; i++)
{
ok = 0;
if(!col[i] && !dp[i-k+n-1] && !ds[k+i])
ok = 1;
if(ok)
{
q[k] = i;
col[i] = dp[i-k+n-1] = ds[k+i] = true;
BKT(k+1);
col[i] = dp[i-k+n-1] = ds[k+i] = false;
}
}
}
}
int main()
{
freopen("damesah.in","r",stdin);
freopen("damesah.out","w",stdout);
scanf("%d",&n);
BKT(0);
printf("%d",sol);
return 0;
}