Pagini recente » Cod sursa (job #2468001) | Cod sursa (job #2545200) | Cod sursa (job #2559855) | Cod sursa (job #788577) | Cod sursa (job #1922822)
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int n, st[15], nrsol=0, vizcol[15], vdiag1[2*15], vdiag2[2*15];
void solutie()
{
nrsol++;
if(nrsol==1)
for(int i=1; i<=n; i++)
fout<<st[i]<<' ';
}
bool valid(int k)
{
if(vizcol[st[k]] || vdiag1[k+st[k]-1] || vdiag2[k-st[k]+n-1])
return false;
return true;
}
void bt(int k)
{
for(int i=1; i<=n; i++)
{
st[k]=i;
if(valid(k))
{
vizcol[st[k]]=vdiag1[k+st[k]-1]=vdiag2[k-st[k]+n-1]=1;
if(k<n)
bt(k+1);
else solutie();
vizcol[st[k]]=vdiag1[k+st[k]-1]=vdiag2[k-st[k]+n-1]=0;
}
}
}
int main()
{
fin>>n; fin.close();
bt(1);
fout<<'\n';
fout<<nrsol<<'\n';
fout.close();
return 0;
}