Pagini recente » Cod sursa (job #2432380) | Cod sursa (job #480060) | Cod sursa (job #1055360) | Cod sursa (job #1490151) | Cod sursa (job #1121763)
#include <fstream>
using namespace std;
ifstream f("damesah.in");
ofstream fout("damesah.out");
int maxn=20;
int maxd=maxn*3;
int n,i,bsol[20],used[20],diag1[20],diag2[20],sol[20],cnt;
int k;
void bkt()
{
++k;
if(k>n)
{
++cnt;
if(sol[1]==0)
{
for(register int i=1;i<=n;++i)
{
sol[i]=bsol[i];
}
}
}
else
{
for(register int i=1;i<=n;++i)
{
int d1=k+i;
int d2=k-i+maxn;
if(!used[i] && !diag1[d1] && !diag2[d2])
{
used[i]=1;
diag1[d1]=1;
diag2[d2]=1;
bsol[k]=i;
bkt();
used[i]=0;
diag1[d1]=0;
diag2[d2]=0;
}
}
}
--k;
}
int main()
{
f>>n;
bkt();
for(i=1;i<=n;i++)
{
fout<<sol[i]<<" ";
}
fout<<"\n"<<cnt;
return 0;
}