⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eightqueens.cpp

📁 数据结构 八皇后问题解决方案一 很好的代码
💻 CPP
字号:
#include"EightQueens.h"

#include<iostream.h>



bool Queens::is_solved() const

{

return(count==board_size);

}





void Queens::print() const

{

	int i,j;

	for(i=0;i<board_size;i++)

	{

		for(j=0;j<board_size;j++)

		{

         cout<<" "<<queen_square[i][j]<<" "<<flush;

		}

		cout<<"  "<<endl;

	}

	cout<<endl<<endl;

}



void Queens::remove(int col)

{

   queen_square[--count][col]= false;

}



void Queens::insert(int col)

/*

Pre:  The square in the first unoccupied row (row count) and column col

      is not guarded by any queen.

Post: A queen has been inserted into the square at row count and column

      col; count has been incremented by 1.

*/

{

   queen_square[count++][col] = true;

}





Queens::Queens(int size)

/*

Post: The Queens object is set up as an empty

      configuration on a chessboard with size squares in each row and column.

*/

{

   board_size = size;

   count = 0;

   for (int row = 0; row < board_size; row++)

      for (int col = 0; col < board_size; col++)

         queen_square[row][col] = false;

}





bool Queens::unguarded(int col) const

/*

Post: Returns true or false according as the square in the first

      unoccupied row (row count) and column col is not guarded by any queen.

*/

{

   int i;

   bool ok = true; //   turns false if we find a queen in column or diagonal



   for (i = 0; ok && i < count; i++)

      ok = !queen_square[i][col];              //   Check upper part of column

   for (i = 1; ok && count - i >= 0 && col - i >= 0; i++)

      ok = !queen_square[count - i][col - i];  //  Check upper-left diagonal

   for (i = 1; ok && count - i >= 0 && col + i < board_size; i++)

      ok = !queen_square[count - i][col + i];  //  Check upper-right diagonal



   return ok;

}



⌨️ 快捷键说明

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