Pagini recente » Cod sursa (job #258306) | Cod sursa (job #1313974) | Cod sursa (job #375952) | Cod sursa (job #671665) | Cod sursa (job #3163169)
#include <fstream>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int n, x[20], cate, use[20];
void afis(int k)
{
cate++;
if(cate == 1)
{
for(int i=1; i<=k; ++i)
fout<<x[i]<<' ';
fout<<'\n';
}
}
bool valid(int k)
{
for(int i=1; i<k; ++i)
if(k-i==x[k]-x[i] || k-i == x[i]-x[k])
return 0;
return 1;
}
void BKT(int k)
{
for(int i=1; i<=n; ++i)
if(use[i] == 0)
{
x[k]=i;
use[i]=1;
if(valid(k))
if(k==n)
afis(k);
else
BKT(k+1);
use[i]=0;
}
}
int main()
{
fin >>n;
BKT(1);
fout<<cate<<'\n';
return 0;
}