重看了一下劉汝佳的白板書,上次寫八皇后時並不是很懂,再寫一次:
方法1:逐行放置皇后,然後遞迴;
**:
1 #include 2#define maxn 8
3#define ll long long
4using
namespace
std;
56 ll ans=0;7
intc[maxn];89
void dfs(int
cur)
1025}26
if(flag)
2730}31
}32}33
34int main(void)35
方法2:思路和方法1差不多,區別是用二維陣列vis[2]來標記之前皇后的位置,判斷是否會相互攻擊
**:
1 #include 2#define maxn 8
3#define ll long long
4using
namespace
std;
56 ll ans=0;7
int c[maxn], vis[3][2*maxn];89
void dfs(int
cur)
1023}24
}25}26
27int main(void)28
《八皇后問題》dfs 回溯
這是個比較經典的問題了,以前看見都沒怎麼動手寫,今天看見了,決定寫一些。思路 我們dfs每一行上的每個數,滿足條件就加入陣列繼續搜,搜完一遍重置資料,這就是回溯的思想,不影響下一次搜尋。我一開始被卡在了對角線有沒有被搜尋過的判斷上了。後面發現。從左下角到右上角的每一條對角線都可以用vis i j 來...
八皇后回溯
八皇后問題 在8x8格棋盤上擺放8個皇后,任意兩個皇后不能處於同一行 同一列 同一斜線上,問有多少種擺法。思路 第乙個皇后放在第一行第一列 第二個皇后從第二行第一列開始檢測,如果不行,放在第二列 第三列 一直到放完所有皇后,如果中途發現有衝突,回溯改變先前放置的皇后位置 使用乙個一位陣列表示,下標表...
回溯演算法 八皇后
總時間限制 1000ms 記憶體限制 65536kb 描述 會下西洋棋的人都很清楚 皇后可以在橫 豎 斜線上不限步數地吃掉其他棋子。如何將8個皇后放在棋盤上 有8 8個方格 使它們誰也不能被吃掉!這就是著名的八皇后問題。對於某個滿足要求的8皇后的擺放方法,定義乙個皇后串a與之對應,即a b 1b2....