n 皇后問題研究的是如何將 n 個皇后放置在 n×n 的棋盤上,並且使皇后彼此之間不能相互攻擊。
上圖為 8 皇后問題的一種解法。
給定乙個整數 n,返回 n 皇后不同的解決方案的數量。
示例:輸入: 4
輸出: 2
解釋: 4 皇后問題存在如下兩個不同的解法。
[[".q…", // 解法 1
「…q」,
「q…」,
「…q.」],
["…q.", // 解法 2
「q…」,
「…q」,
「.q…」]]
該題目是比較經典的回溯演算法題,下面我們使用字典和回溯相結合的思路進行結題。c++**如下:
class
solution
intfindcount
(int n,
int row,unordered_set<
int>
& col,unordered_set<
int>
& dialeft,unordered_set<
int>
& diaright)
return count;}}
};
執行效果(比較渣,就是官方講解的搬運):
該解法利用了,行和下表相減相同則在一條斜線上的規律進行的程式設計,
力扣每日一題 52 N皇后II
八皇后問題是個經典的問題,n皇后問題算是八皇后問題的擴充套件,都可以通過回溯方法求解。資料的儲存方式 對於乙個nxn的棋盤,最基本的實現方式是使用乙個nxn的矩陣m,若矩陣m i j 值為1,則表示在點 i,j 處放置乙個皇后。但是這個實現方式比較耗記憶體。我們知道,一行內最多只能有乙個皇后,所以可...
leetcode演算法練習 52 N皇后 II
所有題目源 git位址 題目n 皇后問題研究的是如何將 n 個皇后放置在 n n 的棋盤上,並且使皇后彼此之間不能相互攻擊。上圖為 8 皇后問題的一種解法。給定乙個整數 n,返回 n 皇后不同的解決方案的數量。示例 輸入 4輸出 2解釋 4 皇后問題存在如下兩個不同的解法。q.解法 1 q q.q....
每日一題 LeetCode
在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。示例 1 輸入 7,5,6,4 輸出 5 限制 0 陣列長度 50000 思想是 分治演算法 所有的 逆序對 於 3 個部分 左邊區間的逆序對 右邊區間的逆序對 橫跨兩個區間的...