//************************************** // // Name: An 8 queen puzzle // Description:solves the 8 queen puzzle // using random generator and recursion. re // sults in very fast answers for a chess b // oard of any size, specified in the code // // // //************************************** // #include #include #include const int chessboardsize=40; //size of chessboard enum{empty, queen, used}; //status struct move{ //movement direction int x; int y; }; struct chessboard{ //chessboard type int size; int square[chessboardsize][chessboardsize]; int usedsquares; int noqueens; }; void setqueenmovdi(move *whatmove, chessboard *board, move *curcoor); void main() { move curcoor; move NE; NE.x=1; NE.y=1; //define digonal movements move NW; NW.x=-1; NW.y=1; move SE; SE.x=1; SE.y=-1; move SW; SW.x=-1; SW.y=-1; chessboard board; board.size=chessboardsize; // srand(time(0)); while(board.noqueens!=board.size ){ board.usedsquares=0; board.noqueens=0; for(int i=0;ix+whatmove->x; next.y=curcoor->y+whatmove->y; if(next.x<0||next.x>board->size-1||next.y<0||next.y>board->size-1)return; if(board->square[next.x][next.y]==empty){ board->square[next.x][next.y]=used; ++board->usedsquares; } setqueenmovdi(whatmove,board,&next); return; }