1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #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 ) printf("%d ",sol[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=
-
upload with new input
-
result: Success time: 0.01s memory: 1720 kB returned value: 0
1 5 8 6 3 7 2 4


