Example D-2 Main Module 8QUEENS.C
extern void trycol(); int a[8]; /* a : array[1..8] of boolean */ int b[16]; /* b : array[2..16] of boolean */ int c[15]; /* c : array[-7..7] of boolean */ int x[8]; main() /* Solve eight-queens problem */ { int i; for (i=0; i <=7; i++) a[i] = 1; for (i=0; i <=15; i++) b[i] = 1; for (i=0; i <=14; i++) c[i] = 1; trycol(0); printf(" Solved eight-queens problem!\n"); } /* End main */
Example D-3 Submodule 8QUEENS_SUB.C
extern int a[8]; extern int b[16]; extern int c[15]; extern void setqueen(); extern void removequeen(); extern void print(); int x[8]; void trycol( j ) int j; { int m; int safe; m = -1; while (m++ < 7) { safe = (a[m] ==1) && (b[m + j] == 1) && (c[m - j + 7] ==1); if (safe) { setqueen(m, j); x[j] = m + 1; if (j < 7) trycol(j + 1); else print(); removequeen(m, j); } } } /* End trycol */ void setqueen(m, j) int m; int j; { a[m] = 0; b[m + j] = 0; c[m - j + 7] = 0; } /* End setqueen */ void removequeen(m, j) int m; int j; { a[m] = 1; b[m + j] = 1; c[m - j + 7] = 1; } /* End removequeen */ void print() { int k; for (k=0; k<=7; k++) { printf(" %d", x[k]); } printf("\n"); } /* End print */
4538P058.HTM OSSG Documentation 22-NOV-1996 13:03:03.44
Copyright © Digital Equipment Corporation 1996. All Rights Reserved.