diff options
Diffstat (limited to 'code/tools/lcc/tst/8q.c')
-rw-r--r-- | code/tools/lcc/tst/8q.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/code/tools/lcc/tst/8q.c b/code/tools/lcc/tst/8q.c new file mode 100644 index 0000000..60a65a9 --- /dev/null +++ b/code/tools/lcc/tst/8q.c @@ -0,0 +1,39 @@ +int up[15], down[15], rows[8], x[8]; +int queens(), print(); + +main() +{ + int i; + + for (i = 0; i < 15; i++) + up[i] = down[i] = 1; + for (i = 0; i < 8; i++) + rows[i] = 1; + queens(0); + return 0; +} + +queens(c) +{ + int r; + + for (r = 0; r < 8; r++) + if (rows[r] && up[r-c+7] && down[r+c]) { + rows[r] = up[r-c+7] = down[r+c] = 0; + x[c] = r; + if (c == 7) + print(); + else + queens(c + 1); + rows[r] = up[r-c+7] = down[r+c] = 1; + } +} + +print() +{ + int k; + + for (k = 0; k < 8; k++) + printf("%c ", x[k]+'1'); + printf("\n"); +} |