board.cpp

来自「这个是解决八皇后问题的程序」· C++ 代码 · 共 55 行

CPP
55
字号
/*************************************************************************
  *      CS2617 Assignment 3 --                                Board.cpp      *
  *      BY Bobby Foerster   Created:  03/21/01    Modified: 03/28/01            *
  ************************************************************************/ 
#include <iostream.h>
#include "Board.h"

Board::Board()   //构造函数,初始化为空
{
   for(int i=0; i<8; i++)
   {
      Rows[i] = free;
      for(int j=0; j<8; j++)  board[i][j] = '.';
   }
   for(int k=0; k<15; k++)  DiagsLR[k] = DiagsRL[k] = free;
} 

void Board::Print()  //显示一组排列结果
{
   cout << endl;
   for(int i=0; i<8; i++)
   {
      for(int j=0; j<8; j++)
	 cout << board[i][j] << ' ';
      cout << endl;
   }
} 

bool Board::isAttacked(int row, int col)  //是否冲突,是返回TRUE,否返回FALSE
{
   int diagLR = col-row+7;
   int diagRL = row+col;
   if (Rows[row] == used || DiagsLR[diagLR] == used || DiagsRL[diagRL] == used)
      return true;
   return false;
}
void Board::PlaceQueen(int row, int col) //放皇后
{
   int diagLR = col-row+7; //左对角线元素
   int diagRL = row+col;  //右对角线元素
   board[row][col] = 'Q';
   Rows[row] = used;
   DiagsLR[diagLR] = used;
   DiagsRL[diagRL] = used;
}

void Board::RemoveQueen(int row, int col)  //移去皇后
{
   int diagLR = col-row+7;
   int diagRL = row+col;
   board[row][col] = '.';
   Rows[row] = free;
   DiagsLR[diagLR] = free;
   DiagsRL[diagRL] = free;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?