leetcode -- N-Queens
9377 단어 LeetCode
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.."]
]
1 public class Solution {
2 public static void main(String[] args) {
3 ArrayList<String[]> result = solveNQueens(4);
4 System.out.println(result.size());
5 for(int i = 0; i < result.size(); i++){
6 System.out.println("solution:" + i);
7 for(int j = 0; j < result.get(i).length; j++){
8 System.out.println(result.get(i)[j]);
9 }
10 }
11 }
12
13 public static ArrayList<String[]> solveNQueens(int n) {
14 // Start typing your Java solution below
15 // DO NOT write main() function
16 ArrayList<String[]> result = new ArrayList<String[]>();
17 int depth = 0;
18 int[] rows = new int[n];
19 for (int i = 0; i < n; i++) {
20 rows[i] = n + 1;
21 }
22 dfs(depth, rows, n, result);
23 return result;
24 }
25
26 public static void dfs(int depth, int[] rows, int n, ArrayList<String[]> result) {
27 if (depth == n) {
28 String[] s = new String[n];
29 for (int i = 0; i < n; i++) {
30 int m = rows[i];
31 StringBuilder tmp = new StringBuilder();
32 for (int j = 0; j < n; j++) {
33 if (j == m) {
34 tmp.append("Q");
35 continue;
36 }
37 tmp.append(".");
38 }
39 s[i] = tmp.toString();
40 }
41 result.add(s);
42 return;
43 }
44 for (int i = 0; i < n; i++) {
45 rows[depth] = i;
46 if (isValid(rows, depth)) {
47 dfs(depth + 1, rows, n, result);
48 }
49 }
50
51 }
52 public static boolean isValid(int[] rows, int depth) {
53 for (int i = 0; i < depth; i++) {
54 if (rows[i] == rows[depth]
55 || Math.abs(rows[i] - rows[depth]) == Math.abs(i - depth)) {
56 return false;
57 }
58 }
59 return true;
60 }
61 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 문자열 입력으로 모든 유효한 IP 주소 생성(LeetCode 93번 문제)이 문제의 공식 난이도는 Medium으로 좋아요 1296, 반대 505, 통과율 35.4%를 눌렀다.각 항목의 지표로 말하자면 보기에는 약간 규범에 맞는 것 같지만, 실제로도 확실히 그렇다.이 문제의 해법과 의도는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.