Pagini recente » Cod sursa (job #3148920) | Cod sursa (job #1705994) | Cod sursa (job #381124) | Cod sursa (job #214073) | Cod sursa (job #1913258)
#include <cstdio>
using namespace std;
int n, nrsol, sol[50];
int vizc[50], vizdp[50], vizds[50];
void afisare()
{
for(int i=0;i<n;i++)
printf("%d ", sol[i]);
}
void bt(int k)
{
if(k==n)
{
if(nrsol==0)
afisare();
nrsol++;
return;
}
for(int v=0;v<n;v++)
if(!vizc[v] && !vizds[v+k] && !vizdp[v-k+n])
{
sol[k]=v+1;
vizc[v]=1;
vizds[v+k]=1;
vizdp[v-k+n]=1;
bt(k+1);
vizc[v]=0;
vizds[v+k]=0;
vizdp[v-k+n]=0;
}
}
int main()
{
freopen("damesah.in", "r", stdin);
freopen("damesah.out", "w", stdout);
scanf("%d", &n);
bt(0);
printf("\n%d", nrsol);
return 0;
}