[Leetcode] N Queens I,II
2013-02-12 05:44
465 查看
http://leetcode.com/onlinejudge#question_51
The n-queens puzzle is the problem of placing n queens
on an n×n chessboard
such that no two queens attack each other.
Given an integer n, return all distinct solutions to the n-queens
puzzle.
Each solution contains a distinct board configuration of the n-queens' placement, where
indicate a queen and an empty space respectively.
For example,
There exist two distinct solutions to the 4-queens puzzle:
The n-queens puzzle is the problem of placing n queens
on an n×n chessboard
such that no two queens attack each other.
Given an integer n, return all distinct solutions to the n-queens
puzzle.
Each solution contains a distinct board configuration of the n-queens' placement, where
'Q'and
'.'both
indicate a queen and an empty space respectively.
For example,
There exist two distinct solutions to the 4-queens puzzle:
[ [".Q..", // Solution 1 "...Q", "Q...", "..Q."], ["..Q.", // Solution 2 "Q...", "...Q", ".Q.."] ]
class Solution { public: bool check(int row, int* place) { for(int i=0;i<row;i++) { int diff = abs(place[row]-place[i]); if(diff == 0 || diff == row - i) return false; } return true; } void placeQueens(int row, int n, int &count, int* place, vector<vector<string> > &result) { if(row==n) //indicates success { vector<string> tmp; count++; for(int i=0;i<n;i++) { string str(n,'.'); str[place[i]] = 'Q'; tmp.push_back(str); } result.push_back(tmp); return; } for(int i=0;i<n;i++) { place[row] = i; if(check(row,place)) { placeQueens(row+1,n,count,place,result); } } } int totalNQueens(int n) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<vector<string> > result; int count = 0; int* place = new int ; placeQueens(0,n,count,place,result); return count; } };
相关文章推荐
- [LeetCode] N-Queens II N皇后问题之二
- [leetcode]N-Queens II @ Python
- 【LeetCode】N-Queens II N皇后问题 回溯法
- Leetcode_n-queens-ii
- leetcode--n_queens&&n_queens_II
- LeetCode "N-Queens II"
- Leetcode | N-Queens I & II
- leetcode 52. N-Queens II & leetcode 51 N-Queens (N皇后问题)
- leetcode -- N-Queens I&II,经典回溯,再看
- [LeetCode 51&52] N-Queens I & II (N皇后问题)
- N-Queens II N皇后问题(有几种放法)@LeetCode
- leetcode做题总结,回溯法(N-Queens, N-QueensII,Combination SumI&II,wordbreak II, SubsetsI&II)
- [LeetCode] 52. N-Queens II N皇后问题 II
- 52. N-Queens II Leetcode Python
- LeetCode--n-queens-ii
- N-Queens II leetcode java
- 52. N-Queens II Leetcode Python
- leetcode51/52-N-Queens I/II(n皇后问题)
- [LeetCode]N-Queens I and II
- [Leetcode] n queens ii n皇后问题