Pagini recente » Cod sursa (job #2078464) | Istoria paginii utilizator/evaecaterina | Cod sursa (job #1647580) | Cod sursa (job #355944) | Cod sursa (job #1574374)
#include <fstream>
#define dimensiune_maxima 13
using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
int v[dimensiune_maxima],n,ok,viz[dimensiune_maxima],nrsol;
void afis()
{
for(int j=1; j<=n; j++)
g<<v[j]<<' ';
g<<'\n';
}
int valid(int k)
{
for(int i=1; i<k; i++)
{
if((v[i]-i == v[k]-k) || (v[i]-i == v[k]+k-2*i))
return 0;
}
return 1;
}
void backtracking(int k)
{
if(k>n)
{
if(ok==1)
nrsol++;
else
{
afis();
nrsol++;
ok=1;
}
}
else
for(int i=1; i<=n; i++)
{
v[k]=i;
if(!viz[i])
{
if(valid(k))
{
viz[i]=1;
backtracking(k+1);
viz[i]=0;
}
}
}
}
int main()
{
f>>n;
backtracking(1);
g<<nrsol<<'\n';
return 0;
}