1#include <stdlib.h>23int N;4int *t;56int7chk(int x, int y)8{9 int i;10 int r;1112 for (r=i=0; i<8; i++) {13 r = r + t[x + 8*i];14 r = r + t[i + 8*y];15 if (x+i < 8 & y+i < 8)16 r = r + t[x+i + 8*(y+i)];17 if (x+i < 8 & y-i >= 0)18 r = r + t[x+i + 8*(y-i)];19 if (x-i >= 0 & y+i < 8)20 r = r + t[x-i + 8*(y+i)];21 if (x-i >= 0 & y-i >= 0)22 r = r + t[x-i + 8*(y-i)];23 }24 return r;25}2627int28go(int n, int x, int y)29{30 if (n == 8) {31 N++;32 return 0;33 }34 for (; y<8; y++) {35 for (; x<8; x++)36 if (chk(x, y) == 0) {37 t[x + 8*y]++;38 go(n+1, x, y);39 t[x + 8*y]--;40 }41 x = 0;42 }43 return 0;44}4546int47main()48{49 t = calloc(64, sizeof(int));50 go(0, 0, 0);51 if(N != 92)52 return 1;53 return 0;54}55