- class Solution {
- public int[] path = new int[100];//path[i]表示第i行的皇后所在第path[i]列
- public int ans = 0;
- public void dfs(int idx,int n) {
- int j;
- if(idx >= n) {
- ans++;
- return;
- }
- for(int i = 0;i < n;i++) {//枚举n列
- for(j = 0;j < idx;j++) {//和前idx行的皇后比较
- if(i == path[j] || Math.abs(i - path[j]) == Math.abs(idx - j))
- break;
- }
- if(j == idx) {
- path[idx] = i;
- dfs(idx + 1,n);
- }
- }
- }
- public int totalNQueens(int n) {
- ans = 0;
- dfs(0,n);
- return ans;
- }
- }