码迷,mamicode.com
首页 > 其他好文 > 详细

59 N Queens

时间:2015-06-08 06:13:56      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:

研究了一夜,各种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;  
}  
};  

 

59 N Queens

标签:

原文地址:http://www.cnblogs.com/footy/p/4560033.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!