Leetcode每日一題:52.N-Queens II(N皇后Ⅱ)
思路:一共有n行n列,放置n個皇后,同行同列同斜對角線都最多隻能有一個皇后;相當於從0~n-1行,每一行放一個,把第k行的皇后放在第j列時,檢查前面0~k-1行的皇后是否與第k行皇后的位置衝突,若衝突則嘗試把它放下一列
//判斷第k行的皇后所放置的位置是否與前面k-1個皇后衝突
bool judge(int *place, int k, int j)
{
for (int i = 0; i < k; i++)
{
//判斷第i個皇后是否與第k個皇后同列,或者同對角線abs(x2-x1)==abs(y2-y1)
if (place[i] == j || (k - i) == abs(j - place[i])) //如果衝突
{
return true;
}
}
return false;
}
//放置第k行的皇后到place[k]列上
void check(int *place, int k, int n, int &res)
{
if (k == n) //已放置n個皇后,無需再放置,方案個數++
{
res++;
return;
}
for (int j = 0; j < n; j++) //第k行的皇后所放置的位置從0~n-1挨個試
{
if (!judge(place, k, j)) //如果第k行的皇后放在第j列與前面的皇后不衝突的話,開始放置第k+1個皇后
{
place[k]=j;
check(place, k + 1, n, res);
}
//如果衝突,則嘗試下一個位置
}
}
int totalNQueens(int n)
{
int res = 0;
int *place = new int[n];
check(place, 0, n, res);//初始放置第0行的皇后
return res;
}
相關文章
- LeetCode 52. N皇后 IILeetCode
- 52. N皇后 II
- Leetcode 通過率最高的困難題 N皇后 II 【回溯解法-剪枝】LeetCode
- 每日一題之拉低通過率 回溯演算法 leetcode 51 N皇后每日一題演算法LeetCode
- N皇后問題
- N皇后和N皇后2
- LeetCode每日一題: 按奇偶排序陣列 II(No.27)LeetCode每日一題排序陣列
- leetcode演算法題解(Java版)-9-N皇后問題LeetCode演算法Java
- 7-22 n queens (10分) 八皇后(n皇后)問題
- LeetCode每日一題: N叉樹的最大深度(No.559)LeetCode每日一題
- LeetCode每日一題:重複 N 次的元素(No.961)LeetCode每日一題
- [Hdfs] lc52. N皇后 II(dfs方案數+經典)
- N 皇后
- leetcode每日一題LeetCode每日一題
- HDU - 2553 N皇后問題(DFS)
- 【一天一大 lee】N皇后 II (難度:困難) - Day20201017
- leetcode【每日一題】122. 買賣股票的最佳時機 II JavaLeetCode每日一題Java
- Leetcode每日一題:992.sort-array-by-parity-ii(按奇偶排序陣列Ⅱ)LeetCode每日一題排序陣列
- 51,N皇后
- Leetcode每日一題(1)LeetCode每日一題
- 2020-11-18 N皇后問題
- N皇后問題(各種優化)優化
- 【每日一題】 3208. 交替組 II每日一題
- 【leetcode】每日精選題詳解之59. 螺旋矩陣 IILeetCode矩陣
- 每日一道演算法題--leetcode 113--路徑總和II--python演算法LeetCodePython
- LeetCode 2024/6 每日一題 合集LeetCode每日一題
- 20241201: 51. N 皇后
- 藍橋杯-N皇后
- 每日leetcode——142. 環形連結串列 IILeetCode
- LeetCode 每日一題「判定字元是否唯一」LeetCode每日一題字元
- 回溯法(排列樹)解決八(N)皇后問題
- LeetCode每日一題: 找不同(No.389)LeetCode每日一題
- LeetCode每日一題: 移除元素(No.27)LeetCode每日一題
- 演算法:N皇后二演算法
- leetcode每日一題—19.刪除連結串列的倒數第N個結點LeetCode每日一題
- n皇后問題--回溯法,以DFS的方式搜尋
- 75. Sort Colors(Leetcode每日一題-2020.10.07)LeetCode每日一題
- LeetCode每日一題: 排列硬幣(No.441)LeetCode每日一題