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...