Pagini recente » Cod sursa (job #210783) | Cod sursa (job #2281297) | Cod sursa (job #2856402) | Cod sursa (job #1820376) | Cod sursa (job #1096394)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
#define MAX 15
int a[MAX], diag[2*MAX], linii[MAX], n, s, diag2[2*MAX];
bool x;
void backt(int k)
{
if(k==n+1)
{
s++;
if(x)
{
for(int i=1;i<=n;i++)
{
fout<<a[i]<<" ";
}
fout<<"\n";
x=0;
}
}
else
{
for(int i=1;i<=n;i++)
{
a[k]=i;
if(!linii[i] && !diag[MAX+i-k] && !diag2[i+k])
{
diag2[i+k]=1;
linii[i]=1;
diag[MAX+i-k]=1;
backt(k+1);
linii[i]=0;
diag[MAX+i-k]=0;
diag2[i+k]=0;
}
}
}
}
int main()
{
fin>>n;
x=1;
backt(1);
fout<<s<<"\n";
}