Pagini recente » Cod sursa (job #2667876) | Cod sursa (job #1025685) | Cod sursa (job #2466347) | Cod sursa (job #1151287) | Cod sursa (job #1876587)
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
ifstream cin ("damesah.in");
ofstream cout("damesah.out");
vector <int> a;
vector <bool> q;
int n,x=0;
bool b=true;
bool diag(int x, int y)
{
for (int i=0; i<x; i++)
if (abs(x-i)==abs(y-a[i])) return false;
return true;
}
void bk(int k)
{
if (k==n)
{
if (b)
{
for (int i=0; i<n; cout << a[i]+1 << ' ',i++);
cout << '\n';
b=false;
}
x++;
return;
}
for (int i=0; i<n; i++)
if ((!q[i]) && diag(k,i)) q[i]=true,a[k]=i,bk(k+1),q[i]=false,a[k]=-1;
}
main()
{
cin >> n;
a.resize(n);
q.resize(n);
for (int i=0; i<n; i++) a[i]=-1,q[i]=false;
bk(0);
cout << x;
}