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

📄 e_queens.cpp

📁 解决8皇后问题的程序。输出多组解的中间加入停顿
💻 CPP
字号:

/*八皇后问题*/

#include <iostream.h>
#include "Stack.h"
#include "Board.h"

int main(void)
{
   Stack rowStack;
   int qRow, qCol, col, row, attacked, exitLoop;
   Board myBoard;

   cout << "Enter the position of the first queen\nRow: " << flush;
   cin >> qRow;
   cout << "Column: " <<  flush;
   cin >> qCol;        //第一个皇后位置

   myBoard.PlaceQueen(qRow,qCol);
   if (qCol == 0)
     col = 1;
   else 
     col = 0;   
   row = 0;

   do 
   {
      while(row < 8)  //超界
      {
         exitLoop = 0;
         if (!(attacked = myBoard.isAttacked(row,col)))   //若无皇后,条件成立
         {
	    myBoard.PlaceQueen(row,col);	  //放皇后	  
	    rowStack.Push(row);             //入栈		    
	    row = 0;		    
	    col++;		    
	    if (col == qCol)
	    col++;
            exitLoop = 1;
         }	  
      	 if (exitLoop)    
	 break;    //找到退出本层循环
      	 else  row++;      // 到下一行
      }
     
      if (col == 8)
      {       
         myBoard.Print();
         row = 8;     
      }
  
      if (row == 8)      
      {
         rowStack.Pop(row);	      
         col--;      //到前一列
         if (col == qCol)
	    col--;
         myBoard.RemoveQueen(row,col);   //移去皇后
         row++;  //找下一个位置
      }
   
  } while(col>=0); //回到0列
	 return 1;
}

⌨️ 快捷键说明

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