Pagini recente » Cod sursa (job #550168) | Cod sursa (job #286945) | Cod sursa (job #365718) | Cod sursa (job #778875) | Cod sursa (job #1330338)
#include <cstdio>
#define MAX_N 14
int queen[MAX_N];
bool col[MAX_N], diag1[MAX_N * 2], diag2[MAX_N * 2];
int ans;
void bkt( int l, int n ) {
if ( l == n ) {
if (ans<1)
{
for(int c=0;c<n;c++)
printf("%d ", queen[c] + 1 );
printf( "\n" );
}
++ans;
} else {
for ( int c = 0; c < n; c++ ) {
if (!col[c] && !diag1[c-l+n-1]&& !diag2[l+c]) {
queen[l]=c;
col[c]=diag1[c-l+n-1]=diag2[l+c]=1;
bkt( l + 1, n );
col[c]=diag1[c-l+n-1]=diag2[l+c]=0;
}
}
}
}
int main () {
freopen("damesah.in", "r", stdin);
freopen("damesah.out", "w", stdout);
int n;
scanf("%d", &n);
bkt(0,n);
printf("%d\n", ans);
}