leetcode 52. N皇后 II(回溯)
生活随笔
收集整理的這篇文章主要介紹了
leetcode 52. N皇后 II(回溯)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
n 皇后問(wèn)題研究的是如何將 n 個(gè)皇后放置在 n×n 的棋盤上,并且使皇后彼此之間不能相互攻擊。
給定一個(gè)整數(shù) n,返回 n 皇后不同的解決方案的數(shù)量。
示例:
輸入: 4
輸出: 2
解釋: 4 皇后問(wèn)題存在如下兩個(gè)不同的解法。
[
[".Q…", // 解法 1
“…Q”,
“Q…”,
“…Q.”],
["…Q.", // 解法 2
“Q…”,
“…Q”,
“.Q…”]
]
代碼
class Solution {char[][] chess;int cnt,res3=0;public int totalNQueens(int n) {cnt=n;chess=new char[n][n];for(int i=0;i<n;i++)//構(gòu)建一個(gè)棋盤Arrays.fill(chess[i],'.');putNQueens(0);return res3;}public void putNQueens(int row) {if(row==cnt)//合法的擺放{res3++;return;}for(int i=0;i<cnt;i++){if(isNQueens(row,i)){chess[row][i]='Q';putNQueens(row+1);chess[row][i]='.';//回溯} }}public boolean isNQueens(int row,int col) {for(int i=1;row-i>=0;i++)if((col+i<cnt&&chess[row-i][col+i]=='Q')||(col-i>=0&&chess[row-i][col-i]=='Q')||chess[row-i][col]=='Q')//判斷主對(duì)角線 副對(duì)角線 同一列 這3個(gè)方向有沒(méi)有皇后return false;return true;} }總結(jié)
以上是生活随笔為你收集整理的leetcode 52. N皇后 II(回溯)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 梦到被派出所抓了什么意思
- 下一篇: leetcode 19. 删除链表的倒数