日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Leetcode51 n皇后 DFS+回溯(模板题)

發(fā)布時(shí)間:2025/4/5 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Leetcode51 n皇后 DFS+回溯(模板题) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

n皇后
鏈接
n皇后問題是說給定n*n的棋盤和n個(gè)皇后,求出所有合理的擺法。所謂合理的擺法是說n個(gè)皇后可以平安無事的處于棋盤上。國際象棋中皇后可以橫著走、豎著走、斜著走,只要處于這些位置,皇后就會(huì)殺掉別人。

函數(shù)
solveQueens(int n)n*n的方格,給出n皇后的解決方案
DFS(vector &board,int row)深搜+回溯找到所有的解,存在result中
isValid(vector &board,int row,int col)判斷(row,col)位置能否放置皇后

回顧深搜的代碼框架

DFS(){//退出條件遍歷{//不合法剪枝,n皇后是列,左上方、右上方不能出現(xiàn)//做出選擇,n皇后是在(row,col)放置皇后//下一次決策遞歸//撤銷選擇} }

DFS調(diào)用
調(diào)用的時(shí)候給定路徑board和選擇列表row,初始時(shí)即為DFS(board,0),棋盤全是空的,從第零行開始遍歷。

代碼

class Solution { public:vector<vector<string> > result;vector<vector<string>> solveNQueens(int n) {vector<string> board(n,string(n,'.'));//賦值n個(gè)點(diǎn)DFS(board,0);//路徑board,選擇列表:rowreturn result;}void DFS(vector<string> &board,int row){//exitif(row==board.size()){result.push_back(board);return;}int n=board[0].size();//column//for(int col=0;col<n;++col){//不合法if(!isValid(board,row,col))//棋盤(row,col)這個(gè)位置不能放置continue;//做出選擇:是該位置(row,col)放置皇后Qboard[row][col]='Q';//下一次決策DFS(board,row+1);//撤銷選擇board[row][col]='.';}} //判斷(row,col)這個(gè)位置是否為Qbool isValid(vector<string> &board,int row,int col){int n=board.size();//size of row//如果該列不能放for(int i=0;i<n;i++){if(board[i][col]=='Q')//固定列,差點(diǎn)寫錯(cuò)return false;}//如果左上方不能放for(int i=row-1,j=col-1;i>=0&&j>=0;i--,j--){if(board[i][j]=='Q')return false;}//如果右上方不能放for(int i=row-1,j=col+1;i>=0&&j<board[0].size();i--,j++){if(board[i][j]=='Q')return false;}return true;} };

總結(jié)

以上是生活随笔為你收集整理的Leetcode51 n皇后 DFS+回溯(模板题)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。