Pagini recente » Cod sursa (job #2017195) | Cod sursa (job #296540) | Cod sursa (job #294025) | Cod sursa (job #2496976) | Cod sursa (job #1971390)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
const int N=15;
int v[N], n, cnt;
bool gasit=false;
bool validare(int pas)
{
for(int i=1; i<pas; i++)
if(v[i]==v[pas])
return false; //pe aceeasi coloana
for(int i=1; i<pas; i++)
if(abs(i-pas)==abs(v[i]-v[pas]))
return false;
return true;
}
void afisare(int pas)
{
for(int i=1; i<=n; i++)
g<<v[i]<<' ';
g<<'\n';
gasit=true;
}
void bkt(int pas)
{
for(int i=1; i<=n; i++)
{
v[pas]=i;
if(validare(pas))
{
if(pas==n)
{
cnt++;
if(!gasit)
afisare(pas);
}
else bkt(pas+1);
}
}
}
int main()
{
f>>n;
bkt(1);
g<<cnt;
f.close();
g.close();
return 0;
}