put queens

class Solution {
public:
    vector<vector<string>> v;
    void putqueen(int k,vector<int> &pos)
    {
        //cout<<" put queen"<< k<<endl;
        int n = pos.size();
        if( k == n )
        {
            string s(n,'.');
            vector<string> tmp( pos.size(),s);
            for(int i=0;i<n;i++)
                tmp[i][pos[i]] = 'Q';
            v.push_back(tmp);
            
           
            return;
        }
        
        for(int i=0;i<n;i++)
        {
            int j;
            for( j=0;j<k;j++)
            {
                if( i == pos[j] || i+k == j+pos[j] || k-i ==j- pos[j])
                    break;
            }
            if( j==k )
            {
                pos[k] = i;
                putqueen(k+1,pos);
            }
        }
        return;
    }
    vector<vector<string> > solveNQueens(int n) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        v.clear();
        if( n== 0 ) return v;
        
        vector<int> pos(n,-1);
        
        putqueen(0,pos);
        return v;
        
    }
};

 

posted on 2013-07-05 17:46  jumping_grass  阅读(163)  评论(0)    收藏  举报

导航