@Getter class Queen { private int[][] board = new int[1024][1024]; private int count = 0; private int sum = 0; public int cal(int n, int x, int y) { for (int j = x; j < n; j++) { if (checkBoard(j, y, n)) { board[y][j] = 1; count = count + 1; if (count == n) { sum = sum + 1; for (int row = 0; row < n; row++) { for (int col = 0; col < n; col++) { System.out.print(board[row][col] + "t"); } System.out.println(); } System.out.println(); } cal(n, 0, y + 1); board[y][j] = 0; count = count - 1; } } return 1; } private boolean checkBoard(int x, int y, int n) { int tempX = x; int tempY = y; // |方向判断 while (tempY > 0) { tempY--; if (board[tempY][tempX] == 1) { return false; } } tempX = x; tempY = y; // /方向判断 while (tempX < n - 1 && tempY > 0) { tempX++; tempY--; if (board[tempY][tempX] == 1) { return false; } } tempX = x; tempY = y; // 方向判断 while (tempX > 0 && tempY > 0) { tempX--; tempY--; if (board[tempY][tempX] == 1) { return false; } } return true; } }