Pagini recente » Cod sursa (job #641014) | Cod sursa (job #2764315) | Cod sursa (job #2260659) | Cod sursa (job #1744067)
#include <iostream>
#include <cstdio>
using namespace std;
int n, viz[20], vizdp[20], vizds[20], sol[20], solutie;
void afisare()
{
for(int i=1; i<=n; ++i)
printf("%d ", sol[i]);
printf("\n");
}
void back(int k)
{
if(k==n+1)
{
if(solutie==0)
afisare();
solutie++;
return;
}
for(int i=1; i<=n; ++i)
{
if(viz[i]==0)
if(vizdp[n+k-i]==0)
if(vizds[k+i]==0)
{
vizdp[n+k-i]=1;
vizds[k+i]=1;
viz[i]=1;
sol[k]=i;
back(k+1);
viz[i]=0;
vizds[k+i]=0;
vizdp[n+k-i]=0;
}
}
}
int main()
{
freopen("damesah.in", "r", stdin);
freopen("damesah.out", "w", stdout);
scanf("%d", &n);
back(1);
printf("%d", solutie);
return 0;
}