Pagini recente » Cod sursa (job #304097) | Cod sursa (job #11486) | Cod sursa (job #1617105) | Cod sursa (job #42441) | Cod sursa (job #2642966)
#include <fstream>
#include <cmath>
using namespace std;
ifstream in("damesah.in");
ofstream out("damesah.out");
const int NMAX=13;
struct solutie
{
int i;
int j;
}sol[1+NMAX];
int n;
int nr_total_sol=0;
bool prima_sol=1;
bool verificare(int linie, int coloana,int index)
{
bool ok=1;
for(int q=1;q<=index-1 && ok;q++)
{
if(sol[q].i==linie || sol[q].j==coloana || abs(linie-sol[q].i)==abs(coloana-sol[q].j))
{
ok=0;
}
}
return ok;
}
void back(int index)
{
if(index>n)
{
if(prima_sol)
{
for(int i=1;i<=n;i++)
{
out<<sol[i].j<<' ';
}
out<<'\n';
prima_sol=0;
}
nr_total_sol++;
}
else
{
for(int i=1;i<=n;i++)
{
if(verificare(index,i,index))
{
sol[index].i=index;
sol[index].j=i;
back(index+1);
}
}
}
}
int main()
{
in>>n;
back(1);
out<<nr_total_sol;
return 0;
}