LeetCode N-Queens
2015-01-23 00:20
411 查看
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
For example,
There exist two distinct solutions to the 4-queens puzzle:
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.."] ]
public class Solution { List<String[]> result; int[] A; public List<String[]> solveNQueens(int n) { result = new ArrayList<String[]>(); A = new int ; nqueens(0, n); return result; } public void nqueens(int cur, int n){ if(cur==n) printres(n); else { for(int i=0;i<n;i++){ A[cur] = i; if(valid(cur)){ nqueens(cur+1, n); } } } } public void printres(int n){ String[] tem = new String ; for(int i=0;i<n;i++){ StringBuffer sBuffer = new StringBuffer(); for(int j=0;j<n;j++){ if(j==A[i]) sBuffer.append('Q'); else sBuffer.append('.'); } tem[i] = sBuffer.toString(); } result.add(tem); } public boolean valid(int r){ for(int i=0;i<r;i++){ if(A[i]==A[r]|| Math.abs(A[i]-A[r])==r-i){ return false; } } return true; } }
相关文章推荐
- [LeetCode]N-Queens
- 【Leetcode】N-Queens (Backtracking)
- LeetCode 51 N-Queens
- [Leetcode] 51. N-Queens
- 【LeetCode】51.N-Queens(hard)解题报告
- LeetCode - N-Queens
- [LeetCode] N-Queens
- LeetCode No.51 N-Queens
- Leetcode: N-Queens
- [Leetcode]N-Queens
- 【leetcode】N-Queens
- LeetCode:N-Queens
- leetcode解题方案--051--N-Queens
- LeetCode 51. N-Queens
- LeetCode--51. N-Queens
- Leetcode 51. N-Queens
- LeetCode——N-Queens
- LeetCode N-Queens
- leetcode[51]N-Queens
- [leetcode刷题系列]N-Queens