Pagini recente » Cod sursa (job #2482525) | Cod sursa (job #136054) | Cod sursa (job #2363930) | Cod sursa (job #1718120) | Cod sursa (job #1483044)
#include <cstdio>
using namespace std;
int n,a[200],nr,c[200],d1[200],d2[200];
bool ok=0;
bool valid(int k)
{
if(c[a[k]]==1)
return 0;
if(d1[k-a[k]+2]==1)
return 0;
if(d2[k+a[k]-2]==1)
return 0;
return 1;
}
void afisare()
{
nr++;
if(!ok)
{
for(int i=1;i<=n;i++)
printf("%d ",a[i]);
ok=1;
printf("\n");
}
}
void bak(int k)
{
for(int i=1;i<=n;i++)
{
a[k]=i;
if(valid(k))
{
if(k==n)
afisare();
else
{
c[a[k]]=1;
d1[k-a[k]+2]=1;
d2[k+a[k]-2]=1;
bak(k+1);
c[a[k]]=0;
d1[k-a[k]+2]=0;
d2[k+a[k]-2]=0;
}
}
}
}
int main()
{
freopen("damesah.in","r",stdin);
freopen("damesah.out","w",stdout);
scanf("%d",&n);
bak(1);
printf("%d",nr);
return 0;
}