DFS 排列數字和n皇后

2021-10-18 19:38:02 字數 1063 閱讀 5818

深度優先遍歷圖的方法是,從圖中某頂點v出發:

(1)訪問頂點v;

(2)依次從v的未被訪問的鄰接點出發,對圖進行深度優先遍歷;直至圖中和v有路徑相通的頂點都被訪問;

(3)若此時圖中尚有頂點未被訪問,則從乙個未被訪問的頂點出發,重新進行深度優先遍歷,直到圖中所有頂點均被訪問過為止。 當然,當人們剛剛掌握深度優先搜尋的時候常常用它來走迷宮.事實上我們還有別的方法,那就是廣度優先搜尋(bfs).

#include

#include

using

namespace std;

const

int n=10;

int n;

int path[n]

;bool st[n]

;void

dfs(

int u)

for(

int i=

1;i<=n;i++)}

}int

main()

#include

using

namespace std;

const

int n =20;

// bool陣列用來判斷搜尋的下乙個位置是否可行

// col列,dg對角線,udg反對角線

// g[n][n]用來存路徑

int n;

char g[n]

[n];

bool col[n]

, dg[n]

, udg[n]

;void

dfs(

int u)

//對n個位置按行搜尋

for(

int i =

0; i < n; i ++

)// 剪枝(對於不滿足要求的點,不再繼續往下搜尋) udg[n - u + i],+n是為了保證大於0if(

!col[i]

&&!dg[u + i]

&&!udg[n - u + i])}

intmain()

leetcode51 N皇后 dfs,全排列

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

N皇后問題 DFS

在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如果n 0,表示結束。output 共有若...

N皇后問題 dfs)

在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如果n 0,表示結束。output 共有若...