import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 the n * @return int整型 */ Integer num = 0; int[][] isVisited; public int Nqueen (int n) { // write code here isVisited = new int[n][n]; solution3(n, 0, -2); return num; } public void solution3(int n, int column, int preLine) { if (column == n) { num++; return; } for (int i = 0; i < n; i++) { if (isVisited[column][i] > 0 || i == preLine - 1 || i == preLine + 1 || i == preLine) { continue; } else { isVisited[column][i]++; for (int k = column + 1; k < n; k++) { isVisited[k][i]++; } int zl = i - 1, yl = i + 1, hang = column + 1; while (zl >= 0 && hang < n) { isVisited[hang++][zl--]++; } hang = column + 1; while (yl < n && hang < n) { isVisited[hang++][yl++]++; } solution3(n, column + 1, i); isVisited[column][i]--; zl = i - 1; yl = i + 1; hang = column + 1; while (zl >= 0 && hang < n) { isVisited[hang++][zl--]--; } hang = column + 1; while (yl < n && hang < n) { isVisited[hang++][yl++]--; } for (int k = column + 1; k < n; k++) { isVisited[k][i]--; } } } } }