59 N Queens

研究了一夜,各种bug。

看到了大神的代码,简洁明了。

学习了。

class Solution {  
public:  
    void printQueen(vector<int> &A,int n,vector<vector<string>> &result){  
    vector<string> r;  
        for(int i=0;i<n;i++){  
            string str(n,'.');  
            str[A[i]] = 'Q';  
            r.push_back(str);  
        }  
        result.push_back(r);  
}  
bool isValidQueens(vector<int>A,int r){  
    for(int i=0;i<r;i++){  
        if((A[i]==A[r])||(abs(A[i]-A[r]))==(r-i))  
            return false;  
    }  
    return true;  
}  
void nqueens(vector<int> A,int cur, int n,vector<vector<string>> &result){  
    if(cur == n){  
        printQueen(A,n,result);  
    }else{  
        for(int i=0;i<n;i++){  
            A[cur] = i;  
            if(isValidQueens(A,cur))  
                nqueens(A,cur+1,n,result);  
        }  
    }  
}  
vector<vector<string> > solveNQueens(int n) {  
    vector<vector<string>> result;  
    result.clear();  
    vector<int> A(n,-1);  
    nqueens(A,0,n,result);  
    return result;  
}  
};  

 

posted on 2015-06-08 05:40  88123  阅读(178)  评论(0编辑  收藏  举报