N-Queens
2014-08-06 06:50
357 查看
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:
Have you been asked this question in an interview?
用排列方法
n-queens 问题说它是dp, 因为position i 的位置 是通过 position[0,,,i-1] 来决定的
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.."] ]
Have you been asked this question in an interview?
用排列方法
n-queens 问题说它是dp, 因为position i 的位置 是通过 position[0,,,i-1] 来决定的
public class Solution { public List<String[]> solveNQueens(int n) { if (n < 0) { return null; } List<String[]> results = new ArrayList<String[]>(); int[] position = new int ; placeQueens(n, position, 0, results); return results; } private void placeQueens(int n, int[] position, int row, List<String[]> results) { if (row == n) { printQueens(n, position, results); return; } for (int i = 0; i < n; i++) { position[row] = i; if (isValide(position, row)) { placeQueens(n, position, row + 1, results); } position[row] = 0; } } private boolean isValide(int[] position, int last) { for (int i = 0; i < last; i++) { if (position[i] == position[last]) { return false; } if ((last - i) == Math.abs(position[last] - position[i])) { return false; } } return true; } private void printQueens(int n, int[] position, List<String[]> results){ String[] result = new String ; for (int i = 0; i < n; i++) { StringBuilder sb = new StringBuilder(); for (int j = 0; j < n; j++) { if (j == position[i]) { sb.append('Q'); } else { sb.append('.'); } } result[i] = sb.toString(); } results.add(result); } }
相关文章推荐
- 8 Queens Chess Problem
- PAT (Advanced Level) Practise 1128 N Queens Puzzle (20)
- LeetCode--N-Queens
- leetcode-51. N-Queens
- n-queens-ii
- Leetcode||51. N-Queens
- Leetcode 51 52 N-Queens
- LeetCode 51. N-Queens(N皇后问题Ⅰ)
- URAL 1034 Queens in Peaceful Positions
- William Shakespeare——7、Queens,Kings,and Princes
- [leetcode]N-Queens
- 【leetcode】N-Queens
- N-Queens
- N-Queens
- 【N皇后&DFS】N-Queens
- LeetCode N-Queens
- N-Queens
- LeetCode刷题笔录N-Queens
- LeetCode Solutions : N-Queens
- leetcode--N-Queens