每日一題之拉低通過率 回溯演算法 leetcode 51 N皇后
思路
建立決策樹,每個節點的屬性:
- 路徑
- 選擇列表
遍歷決策樹的每一個節點即可。每個節點的選擇:在該行的任意一列放置一個皇后。
class Solution {
private:
vector<vector<string>> allPath;
public:
void backTrack(vector<string>& path, int row) {
if (path.size() == row) {
allPath.push_back(path);
return ;
}
for (int i = 0; i < path.size(); i ++) {
if (!isVaild(row, i, path)) continue;
path[row][i] = 'Q';
backTrack(path, row + 1);
path[row][i] = '.';
}
}
bool isVaild(int row, int col, vector<string>& path) {
for (int i = row - 1; i >= 0; i --) { //觀察同一列
if (path[i][col] == 'Q') return false;
}
for (int i = row - 1, j = col - 1; i >= 0 && j >= 0; i --, j --) { //觀察左上
if (path[i][j] == 'Q') return false;
}
for (int i = row - 1, j = col + 1; i >= 0 && j < path.size(); i --, j ++) { //觀察右上
if (path[i][j] == 'Q') return false;
}
return true;
}
vector<vector<string>> solveNQueens(int n) {
vector<string> path(n, string(n, '.'));
backTrack(path, 0);
return allPath;
}
};
相關文章
- Leetcode 通過率最高的困難題 N皇后 II 【回溯解法-剪枝】LeetCode
- Leetcode每日一題:52.N-Queens II(N皇后Ⅱ)LeetCode每日一題
- 回溯法(排列樹)解決八(N)皇后問題
- 使用回溯演算法解決N皇后問題以及間隔排列問題演算法
- 用棧+回溯+非遞迴解決N皇后問題遞迴
- 從八皇后問題到回溯演算法演算法
- leetcode演算法題解(Java版)-9-N皇后問題LeetCode演算法Java
- 國際象棋“皇后”問題的回溯演算法演算法
- N皇后問題
- 八皇后之回溯法解決
- 演算法:N皇后二演算法
- LeetCode 52. N皇后 IILeetCode
- 資料結構和演算法——遞迴-八皇后問題(回溯演算法)資料結構演算法遞迴
- LeetCode通關:連刷十四題,回溯演算法完全攻略LeetCode演算法
- 程式碼隨想錄演算法訓練營第三十天 | 51.N 皇后演算法
- 每天刷個演算法題20160519:回溯法解八皇后演算法
- LeetCode每日一題: N叉樹的最大深度(No.559)LeetCode每日一題
- LeetCode每日一題:重複 N 次的元素(No.961)LeetCode每日一題
- N皇后問題(各種優化)優化
- 《演算法》系列—大白話聊分治、回溯,手撕八皇后演算法
- 回溯演算法 | 追憶那些年曾難倒我們的八皇后問題演算法
- leetcode每日一題LeetCode每日一題
- 藍橋杯-N皇后
- 經過努力+作弊,我終於完成了leetcode通過率最低的一道題LeetCode
- C#資料結構與演算法系列(十四):遞迴——八皇后問題(回溯演算法)C#資料結構演算法遞迴
- 【LeetCode回溯演算法#08】遞增子序列,鞏固回溯演算法中的去重問題LeetCode演算法
- 【演算法】8皇后問題演算法
- Leetcode每日一題(1)LeetCode每日一題
- leetcode.回溯演算法能解決什麼問題?LeetCode演算法
- js使用遞迴回溯法解八皇后問題程式碼分享JS遞迴
- [演算法之回溯演算法]演算法
- 經典n皇后問題java程式碼實現Java
- LeetCode每日一題:sort colorsLeetCode每日一題
- 常用演算法之回溯法演算法
- 【LeetCode回溯演算法#07】子集問題I+II,鞏固解題模板並詳解回溯演算法中的去重問題LeetCode演算法
- LeetCode演算法訓練-回溯總結LeetCode演算法
- [每日一題] 第十六題:n個骰子的點數每日一題
- LeetCode 每日一題「判定字元是否唯一」LeetCode每日一題字元