您的位置:首页 > 产品设计 > UI/UE

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
'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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: