Pagini recente » Cod sursa (job #1427954) | Cod sursa (job #243027) | Cod sursa (job #205235) | Cod sursa (job #1323824) | Cod sursa (job #1567923)
#include <iostream>
#include <fstream>
#define nmax 14
using namespace std;
int x[nmax],n,ok,viz[nmax],nrsol;
bool validare(int k)
{
for(int i=1; i<k; i++)
{
if((x[i]-i == x[k]-k) || (x[i]-i == x[k]+k-2*i))
return 0;
}
return 1;
}
void backtracking(int k)
{
if(k>n)
{
if(ok==1)
nrsol++;
else
{
for(int j=1; j<=n; j++)
cout<<x[j]<<' ';
cout<<'\n';
nrsol++;
ok=1;
}
}
else
for(int i=1; i<=(k==1? n/2 : n); i++)
{
x[k]=i;
if(!viz[i])
{
if(validare(k))
{
viz[i]=1;
backtracking(k+1);
viz[i]=0;
}
}
}
}
int main()
{
freopen("damesah.in","rt",stdin);
freopen("damesah.out","wt",stdout);
cin>>n;
backtracking(1);
cout<<nrsol*2<<'\n';
return 0;
}