?? 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 + -