📄 e_queens.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 + -