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; } col--; //到前一列
if (col == qCol) col--; myBoard.RemoveQueen(row,col); //移去皇后
row++; //找下一个位置
} }
while(col>=0); //回到0列
return 1;}
2020-05-27
最新推荐文章于 2020-06-27 00:04:03 发布