Pagini recente » Cod sursa (job #2401712) | Monitorul de evaluare | Cod sursa (job #608975) | Cod sursa (job #266988) | Cod sursa (job #1123591)
#include <fstream>
using namespace std;
ifstream f("damesah.in");
ofstream g("damesah.out");
int maxn=20;
int maxd=maxn*3;
int n,i,bsol[20],used[20],diag1[20],diag2[20],sol[20];
long cnt;
void bkt(int k)
{
if(k==n+1)
{
++cnt;
if(sol[1]==0)
{
for(int i=1;i<=n;++i)
{
g<<bsol[i]<<" ";
}
sol[1]=1;
}
}
else
{
for(int i=1;i<=n;++i)
{
int d1=n+k-i+1;
int d2=k+i-1;
if(!used[i]&&!diag1[d1]&&!diag2[d2])
{
used[i]=1;
diag1[d1]=1;
diag2[d2]=1;
bsol[k]=i;
bkt(k+1);
used[i]=0;
diag1[d1]=0;
diag2[d2]=0;
}
}
}
}
int main()
{
f>>n;
bkt(1);
g<<"\n"<<cnt;
return 0;
}