vector<vector<string> > solveNQueens(int n) 
  {
     // Start typing your C/C++ solution below
     // DO NOT write int main() function
     
     vector<int> queenPos(n, 0);
     vector<int> curPosInLines(n,0);
     int currentline = 0;
     ret.clear();
     if(n<=0) return ret;
     while(currentline >=0)
     {
         bool validQ = isValidQueen(queenPos, n, currentline);
         if(validQ)
         {
             if(currentline == n-1)
             {
                 //ret++; // record a solution
                 vector<string> solution;
                 for(int i=0; i<n; i++)
                 {
                     string s(n, '.');
                     s[queenPos[i]] = 'Q';
                     solution.push_back(s);
                 }
                 ret.push_back(solution);
                 
                 goNext(queenPos, currentline, n);
             }
             else
             {
                 queenPos[++currentline] = 0;
             }                
         }
         else
         {
             goNext(queenPos, currentline, n);
         }
     }
     return ret;
 }
示例#2
0
 int totalNQueens(int n) {
     int result = 0;
     vector<int> queenPos(n, -1);
     putQueen(queenPos, 0, n, result);
     return result;
 }