Pagini recente » Cod sursa (job #1651454) | Cod sursa (job #1822090) | Cod sursa (job #3204283) | Cod sursa (job #1528886) | Cod sursa (job #1213262)
#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;
ifstream fi("damesah.in");
ofstream fo("damesah.out");
int n,s[20],v[20];
int k=0,sol=0;
int abs(int x)
{
if (x<0)
x=-x;
return x;
}
bool corespunde(int p)
{
for (int i=1;i<p;++i)
if (s[i]==s[p] || (p-i)==abs(s[i]-s[p]))
return false;
return true;
}
void back(int p)
{
if (p>n)
{
if (!k)
{
k=1;
for (int i=1;i<=n;++i)
fo<<s[i]<<" ";
fo<<"\n";
}
++sol;
return;
}
for(int i=1;i<=n;++i)
if (v[i])
{
--v[i];
s[p]=i;
if (corespunde(p))
back(p+1);
++v[i];
}
s[p]=0;
}
int main()
{
fi>>n;
memset(v,1,sizeof(v));
back(1);
fo<<sol<<"\n";
fo.close();
}