You can use N-Queens I 's method counting for the result. But it wont pass the leetcode test.
Use bit operation will be much faster:
1 class Solution { 2 private: 3 int count, rec; 4 public: 5 void getQueen(int row, int ld, int rd) { 6 if (row == rec) { 7 count++; 8 return; 9 } else { 10 int nonOccupied = rec & ~(row | rd | ld), occupy; 11 while (nonOccupied != 0) { 12 occupy = nonOccupied & (~nonOccupied + 1); 13 nonOccupied -= occupy; 14 getQueen(row + occupy, (ld + occupy) << 1, (rd + occupy) >> 1); 15 } 16 } 17 } 18 int totalNQueens(int n) { 19 count = 0; 20 rec = (1 << n) - 1; 21 getQueen(0, 0, 0); 22 return count; 23 } 24 };