Pagini recente » Cod sursa (job #2625687) | Cod sursa (job #2350311) | Cod sursa (job #550280) | Cod sursa (job #741827) | Cod sursa (job #3203623)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("damesah.in");
ofstream out ("damesah.out");
const int NMAX=15;
int n;
int v[NMAX];
bitset <NMAX> fr;
bool gasit=false;
int cnt;
void afis()
{
for(int i=1; i<=n; i++)
out<<v[i]<<" ";
out<<'\n';
gasit=true;
}
inline bool ok(int poz)
{
for(int i=1; i<poz; i++)
{
if(v[poz]==v[i] || abs(v[i]-v[poz])==abs(i-poz))
return false;
}
return true;
}
void bkt(int poz)
{
for(int i=1; i<=n; i++)
{
v[poz]=i;
if(!fr[i] && ok(poz))
{
if(poz==n)
{
if(!gasit)
afis();
cnt++;
}
else
{
fr[i]=true;
bkt(poz+1);
fr[i]=false;
}
}
}
}
int main()
{
in>>n;
bkt(1);
out<<cnt;
return 0;
}