Pagini recente » Cod sursa (job #2784808) | Cod sursa (job #613226) | Cod sursa (job #2601641) | Cod sursa (job #345244) | Cod sursa (job #1194936)
#include <cstdio>
#define MAX 14
using namespace std;
bool diagp[2*MAX],diags[2*MAX],col[MAX];
short int sol[MAX+MAX];
int nrsol,n;
void back(int k);
int main()
{
freopen("damesah.in","r",stdin);
freopen("damesah.out","w",stdout);
scanf("%d",&n);
back(1);
printf("%d\n",nrsol);
return 0;
}
void back(int k){
if(k==n+1){
if(++nrsol==1){
for(int i=1;i<=n;printf("%hd ",sol[i]),++i);
printf("\n");
}
}
else {
for(int i=1;i<=n;++i)
if(!col[i] and !diagp[i-k+n] and !diags[i+k]){
diags[i+k]=col[i]=diagp[i-k+n]=true;
sol[k]=i;
back(k+1);
diags[i+k]=col[i]=diagp[i-k+n]=false;
}
}
}