1. 程式人生 > >LeetCode Day40 Queen N

LeetCode Day40 Queen N

class Solution {
public:
    vector<vector<string>> solveNQueens(int n) {
        vector<vector<string>> res;
        vector<int> pos(n,-1);
        DFS(pos,0,res);  
        return res;
    }
    void DFS(vector<int> &pos,int row,vector<vector<string>>
& res){ int n=pos.size(); if(row==n){ vector<string> out(n,string(n,'.')); for(int i=0;i<n;i++){ out[i][pos[i]]='Q'; } res.push_back(out); } else{ for(int col=0;col<n;col++){ int
flag=1; for(int i=0;i<row;i++){//判斷有沒有列或對角線衝突 判斷對角線,即判斷當前行減去第i行的值和當前列減去第i行皇后所在列的值是否相等 if(pos[i]==col||abs(row-i)==abs(col-pos[i])) flag=0; } if(flag){ pos[row]=col; DFS(pos,row+1,res); pos[
row]=-1; } } } } };

其他解法

N皇后其他解法