Pagini recente » Cod sursa (job #1978282) | Cod sursa (job #931003) | Cod sursa (job #676433) | Cod sursa (job #1424034) | Cod sursa (job #1916716)
#include <cstdio>
#include <cstdlib>
using namespace std;
FILE* fin=fopen("damesah.in","r");
FILE* fout=fopen("damesah.out","w");
int n,v[20],nr,mij,aux;
void Tipar()
{
for(int j=1;j<=n;++j)
fprintf(fout,"%d ",v[j]);
fprintf(fout,"\n");
}
int Valid(int i)
{
int dif=0;
for(int j=1;j<i;++j)
{
if(v[i]==v[j])
return 0;
dif=i-j;
if(v[i]==v[j]-dif||v[i]==v[j]+dif)
return 0;
}
return 1;
}
void Back(int i)
{
if(v[1]==mij&&aux==0)
aux=nr;
if(v[1]>mij)
{
if(n%2==0)
{
nr*=2;
fprintf(fout,"%d",nr);
}
else
{
nr=nr-aux;
aux*=2;
fprintf(fout,"%d",aux+nr);
}
exit(0);
}
else
{
if(i>n)
{
if(nr==0)
Tipar();
nr++;
}
else
for(int j=1;j<=n;++j)
{
v[i]=j;
if(Valid(i))
Back(i+1);
}
}
}
int main()
{
fscanf(fin,"%i",&n);
mij=n/2;
if(n%2==1)
++mij;
Back(1);
fprintf(fout,"%d",nr);
return 0;
}