Pagini recente » Cod sursa (job #195121) | Cod sursa (job #843735) | Cod sursa (job #754635) | Cod sursa (job #1349376) | Cod sursa (job #1807597)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
int sah[15][15], nr, ok, n;
vector <int> coloana;
bool verif(int l, int c)
{
for(int i=1;i<=n;i++)
{
if(i!=l && sah[i][c]==1)
return false;
if(l-i>0)
{
if(c-i>0 && sah[l-i][c-i]==1)
return false;
if(c+i<=n && sah[l-i][c+i]==1)
return false;
}
if(l+i<=n)
{
if(c-i>0 && sah[l+i][c-i]==1)
return false;
if(c+i<=n && sah[l+i][c+i]==1)
return false;
}
}
return true;
}
void backtracking(int l)
{
for(int i=1;i<=n;i++)
{
if(verif(l, i))
{
sah[l][i]=1;
coloana.push_back(i);
if(l==n)
{
if(nr==0){
for(unsigned int j=0;j<coloana.size();j++)
g<<coloana[j]<<' ';
g<<'\n';
}
nr++;
}
else
backtracking(l+1);
coloana.pop_back();
sah[l][i]=0;
}
}
}
int main()
{
f>>n;
backtracking(1);
g<<nr;
return 0;
}