我是學習這個部落格的–>八皇后問題(dfs常規解法)
dfs還是用的不太靈活
題目的思路很中重要:
分界線用一維陣列儲存每一行的列數,從第一行開始深搜,對於每一行i,對從1到8列進行判斷是否符合,符合就加入,然後深搜下一層。
#include
using namespace std;
int s;
int a[10]
;void
dfs(
int i)
for(
int j=
1;j<=
8;j++)}
if(ok)
dfs(i+1)
;}return;}
intmain()
另乙個,不會超時
#include
#include
using namespace std;
int a[20]
;int b[20]
,c[100
],d[
100]
;//記錄列,左對角線,右對角線
int n,s;
int t=0;
void
dfs(
int i)
for(
int j=
1;j<=n;j++)}
return;}
intmain()
八皇后問題 DFS
古老而且典型的回溯問題 八皇后問題 找了採用深度優先 進行實現 思路 一 首先 需要 乙個判斷該位置能不能放的問題 1 乙個同一行 肯定不能放 並且 mat i col 問題了 2 左斜向上的部分肯定不能放 因為這裡是從0 行開始的 先卡第一行 在看第二行 要是左斜向上 有皇后 那麼這個位置不能放 ...
八皇后問題(dfs)
八皇后問題,是乙個古老而著名的問題,是搜尋演算法的經典案例。該問題是國際西洋棋棋手馬克思貝瑟爾於1848年提出 在8 8格的西洋棋上擺放八個皇后。使其不能相互攻擊,即任意兩個皇后都不能處於同一行 同一列或者同一斜線,問有多少中擺法。分析 用dfs一行一行得進行擺放,用for迴圈來確定每一列,由於是一...
八皇后問題 dfs
一 題意解析 西洋棋中的皇后,可以橫向 縱向 斜向移動。如何在乙個8x8的棋盤上放置8個皇后,使得任意兩個皇后都不在同一條橫線 豎線 斜線方向上?八皇后問題是乙個古老的問題,於1848年由一位西洋棋棋手提出 在8 8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或...