POJ 2754八皇后問題 DFS

2021-10-04 23:37:19 字數 1045 閱讀 9705

poj 2754八皇后問題

思路

遞迴,每次從1到8(用0-7方便)選符合題意的數填進去,再遞迴填下乙個

用 bool used[8] 存當前解的數字使用情況

用 int ans[8] 來存當前的解

用 int allans[92][8] 來存每乙個解

用 int allnum 來存當前解的序號

遞迴函式

由於題設,dfs的引數只需要乙個,即行號

dfs的內容:

1.出口:要包括存好當前解的功能

2.選數:要包括三個功能

(1)選數;(2)遞迴;(3)標記已使用以及復位

需要注意的是選數的時候

# 矛盾的條件不要寫錯

#盡量不要有冗餘迴圈

**:

void

dfs(

int i)

//printf("\n");

allnum++

;return;}

for(j=

0;j<

8;j++

)//找解的過程,j表示列號

if(k==i)

//前幾行都沒有矛盾}}

return

;}

ac**

#include

using

namespace std;

int allans[92]

[8],ans[8]

,allnum=0;

bool used[8]

;void

dfs(

int i)

//printf("\n");

allnum++

;return;}

for(j=

0;j<

8;j++)if

(k==i)}}

return;}

intmain()

return0;

}

百練 2754 八皇后 (DFS)

2754 八皇后 總時間限制 1000ms 記憶體限制 65536kb 描述會下西洋棋的人都很清楚 皇后可以在橫 豎 斜線上不限步數地吃掉其他棋子。如何將8個皇后放在棋盤上 有8 8個方格 使它們誰也不能被吃掉!這就是著名的八皇后問題。對於某個滿足要求的8皇后的擺放方法,定義乙個皇后串a與之對應,即...

poj百練 2754 八皇后 回溯

描述 會下西洋棋的人都很清楚 皇后可以在橫 豎 斜線上不限步數地吃掉其他棋子。如何將8個皇后放在棋盤上 有8 8個方格 使它們誰也不能被吃掉!這就是著名的八皇后問題。對於某個滿足要求的8皇后的擺放方法,定義乙個皇后串a與之對應,即a b1b2.b8,其中bi為相應擺法中第i行皇后所處的列數。已經知道...

百練 2754 八皇后

總時間限制 1000ms 記憶體限制 65536kb 描述 會下西洋棋的人都很清楚 皇后可以在橫 豎 斜線上不限步數地吃掉其他棋子。如何將8個皇后放在棋盤上 有8 8個方格 使它們誰也不能被吃掉!這就是著名的八皇后問題。對於某個滿足要求的8皇后的擺放方法,定義乙個皇后串a與之對應,即a b 1b 2...