Pagini recente » Cod sursa (job #2114665) | Cod sursa (job #2483718) | Cod sursa (job #1657335) | Cod sursa (job #440839) | Cod sursa (job #1480547)
#include <cstdio>
using namespace std;
int n,a[20],nr;
bool ok=0;
int modul(int x)
{
if(x<0)
return -x;
return x;
}
bool valid(int k)
{
for(int i=1;i<k;i++)
{
if(a[k]==a[i])
return 0;
if(modul(i-a[i])==modul(k-a[k])||modul(i+a[k])==modul(k+a[i]))
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
bak(k+1);
}
}
}
int main()
{
freopen("damesah.in","r",stdin);
freopen("damesah.out","w",stdout);
scanf("%d",&n);
bak(1);
printf("%d",nr);
return 0;
}