#include <stdio.h>
int isSafe(int k,int i,int *x)
{
int j;
for(j=0;j<k;j++)
{
//old queen is placed at jth row of x[j] column
//new queen to be placed at kth row of ith column
if(i
==x
[j
] || abs(k
-j
)==abs(i
-x
[j
])) return 0;
}
return 1;
}
void printSol(int* sol, int N)
{
int row;
for( row = 0; row < N; ++row )
}
int Nqueen(int k, int* sol, int N)
{
int col;
if( k == N )
{
printSol(sol,N);
return 1;
}
else
{
for(col = 1;col <= N; col++) //determines appropriate column number of the kth queen to be placed
{
if( isSafe(k,col,sol) )
{
sol[k] = col;
if( Nqueen(k+1, sol, N) )
return 1;
// sol[k] = 0;
}
}
return 0;
}
}
int main()
{
int sol[8], N = 8;
Nqueen(0,sol,N);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgaXNTYWZlKGludCBrLGludCBpLGludCAqeCkKewoJaW50IGo7Cglmb3Ioaj0wO2o8aztqKyspCgl7CgkJICAvL29sZCBxdWVlbiBpcyBwbGFjZWQgYXQganRoIHJvdyBvZiB4W2pdIGNvbHVtbgoJCSAgLy9uZXcgcXVlZW4gdG8gYmUgcGxhY2VkIGF0IGt0aCByb3cgb2YgaXRoIGNvbHVtbgoJCWlmKGk9PXhbal0gfHwgYWJzKGstaik9PWFicyhpLXhbal0pKQoJCQlyZXR1cm4gMDsKCX0KCXJldHVybiAxOwp9Cgp2b2lkIHByaW50U29sKGludCogc29sLCBpbnQgTikKewoJaW50IHJvdzsKCglmb3IoIHJvdyA9IDA7IHJvdyA8IE47ICsrcm93ICkKCQlwcmludGYoIiVkICIsc29sW3Jvd10pOwp9CgppbnQgTnF1ZWVuKGludCBrLCBpbnQqIHNvbCwgaW50IE4pCnsKCWludCBjb2w7CglpZiggayA9PSBOICkKCXsKCQlwcmludFNvbChzb2wsTik7CgkJcmV0dXJuIDE7Cgl9CgllbHNlCgl7CgkJZm9yKGNvbCA9IDE7Y29sIDw9IE47IGNvbCsrKSAgLy9kZXRlcm1pbmVzIGFwcHJvcHJpYXRlIGNvbHVtbiBudW1iZXIgb2YgdGhlIGt0aCBxdWVlbiB0byBiZSBwbGFjZWQKCQl7CgkJCWlmKCBpc1NhZmUoayxjb2wsc29sKSApCgkJCXsKCQkJCXNvbFtrXSA9IGNvbDsKCQkJCWlmKCBOcXVlZW4oaysxLCBzb2wsIE4pICkKCQkJCQlyZXR1cm4gMTsKCQkJCS8vIHNvbFtrXSA9IDA7CgkJCX0KCQl9CgkJcmV0dXJuIDA7Cgl9Cn0KCmludCBtYWluKCkKewoJaW50IHNvbFs4XSwgTiA9IDg7CglOcXVlZW4oMCxzb2wsTik7CgoJcmV0dXJuIDA7Cn0=