Quake-III-Arena

Quake III Arena GPL Source Release
Log | Files | Refs

8q.c (526B)


      1 int up[15], down[15], rows[8], x[8];
      2 int queens(), print();
      3 
      4 main()
      5 {
      6 	int i;
      7 
      8 	for (i = 0; i < 15; i++)
      9 		up[i] = down[i] = 1;
     10 	for (i = 0; i < 8; i++)
     11 		rows[i] = 1;
     12 	queens(0);
     13 	return 0;
     14 }
     15 
     16 queens(c)
     17 {
     18 	int r;
     19 
     20 	for (r = 0; r < 8; r++)
     21 		if (rows[r] && up[r-c+7] && down[r+c]) {
     22 			rows[r] = up[r-c+7] = down[r+c] = 0;
     23 			x[c] = r;
     24 			if (c == 7)
     25 				print();
     26 			else
     27 				queens(c + 1);
     28 			rows[r] = up[r-c+7] = down[r+c] = 1;
     29 		}
     30 }
     31 
     32 print()
     33 {
     34 	int k;
     35 
     36 	for (k = 0; k < 8; k++)
     37 		printf("%c ", x[k]+'1');
     38 	printf("\n");
     39 }