[Digital logo]
[HR]

OpenVMS Debugger Manual


Previous | Contents

D.2 8QUEENS.C

8QUEENS.C is the multiple-module program that solves the eightqueens problem. This program consists of two modules, 8QUEENS.C (Example D-2) and 8QUEENS_SUB.C (Example D-3).

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 */ 


Index | Contents | [Home] | [Comments] | [Ordering info] | [Help]

[HR]

  4538P058.HTM
  OSSG Documentation
  22-NOV-1996 13:03:03.44

Copyright © Digital Equipment Corporation 1996. All Rights Reserved.

Legal