八皇后問題 BFS求出所有解

2021-06-20 19:26:42 字數 892 閱讀 2333

以前就聽說過八皇后問題,沒學bfs的時候,完全沒有頭緒,學了bfs後,也沒想起這道題,前幾天偶偶又看到了這道題,於是心血來潮,決定用bfs遍歷找出所有解(方法很拙,勿噴),採用的資料結構感覺也不是很好,每個point裡面都有乙個矩陣,浪費了大量的空間(我也沒想到更好的方法),歡迎有想法的提出改進的地方。附上**吧:

#include #include #include #include #include using namespace std;

struct point

point() : x(0), y(0) {}

};//初始化point中的矩陣

void initialize(point& temp)

//為那些不能走的點做上標記

void doflag(point& p)

int i = 1, x1 = p.x, y1 = p.y;

while (x1-i >=0 || y1 - i >= 0 || x1+i <= 7 || y1+i <= 7)

}vectorvt; //記錄每一種方法

int count_ = 0; //記錄總數

queueque; //主要用於bfs

//廣度優先遍歷

void bfs()

while (que.front().path.length() < 9)

que.pop();

for (int i = 0; i < 8 && len != 8; i++) }}}

//列印方法

void printmap(string str)

cout << endl;

} cout << endl;

}int main()

皇后問題,遞迴所有解

八皇后的遞迴實現 include include define n 8 列 判斷此列是否存在皇后。若有,則為1 沒有,則為0 int col n 判斷皇后所在的右對角線是否存在皇后。若有,則為1 沒有,則為0 在右對角線n 1 i j int right 2 n 1 判斷皇后所在的左對角線是否存在皇...

用遞迴函式求出迷宮所有解

牆元素值為0,可通過路徑為 1,通過路徑為足跡。輸入格式為x,y,中間有逗號。依次試探東南西北四個方向 include using namespace std struct postype 迷宮座標位置型別 define maxlength 25 設迷宮的最大行列為25 typedef int ma...

求N皇后問題所有解(分支限界法)

問題描述 略 注意事項 這裡用的是fifo佇列 細節說明 裡面有詳細的註解 及執行截圖 include include include include include using namespace std 定義乙個結點類 struct node 定義乙個queen的類 class queen 判斷...