C語言回溯演算法解決N皇后問題

2022-05-03 03:39:08 字數 633 閱讀 2105

回溯演算法的模型是 x++, not satisfy ? x-- : continue.

**中x作列號,y[x]儲存第x列上皇后放置的位置。

1 #include2 #include3

#define n 5

4int position_check(int,int*);

5void print_board(int count,int*y);

6int

main()

7; //

記錄每列上的皇后放的位置

9int count = 0; //

解的個數

10int x = 1;11

while(x>0)12

30}31else

32 x++; //

繼續尋找下乙個皇后的位置,還沒找到完整解決方案33}

34else

//未找到可以放置第x個皇后的位置,到該步為止,已經知道不滿足要求

3540}41

}42int position_check(int k,int* y) //

測試合法性

43

view code

看了唐大仕老師的8皇后改的,基本是複製貼上 ( ╯□╰ )

回溯法解決N皇后問題 C語言

問題描述 八皇后問題是乙個以西洋棋為背景的問題 如何能夠在 8 8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。回溯法 回溯法又稱試探法。回溯法的基本做法是深度優先搜尋。即從一條路往前走,能進則進,不能進則退回來...

N皇后問題 回溯演算法 C

include include include include define n 4 皇后個數 int a n 皇后不能在同一行,所以簡化為用一維陣列儲存皇后所在列 int sum 0 計算滿足條件數 int b n n 儲存每種方法 檢查放置位置是否滿足條件,皇后不能出現在同一列,同一行,及對角線...

回溯 皇后 演算法筆記 回溯演算法 N皇后問題

n 皇后問題研究的是如何將 n 個皇后放置在 n n 的棋盤上,並且使皇后彼此之間不能相互攻擊。上圖為 8 皇后問題的一種解法。給定乙個整數 n,返回所有不同的 n 皇后問題的解決方案。每一種解法包含乙個明確的 n 皇后問題的棋子放置方案,該方案中 q 和 分別代表了皇后和空位。示例 輸入 4 輸出...