题解 | #N皇后问题#
N皇后问题
https://www.nowcoder.com/practice/c76408782512486d91eea181107293b6
#include <bits/types/FILE.h>
class Solution {
public:
/**
*
* @param n int整型 the n
* @return int整型
*/
int arr[10][10];
int ans = 0;
int tmp = 0;
int N;
int Nqueen(int n) {
N = n;
backTrack(0);
return ans;
}
void backTrack(int r) {
if (r == N && tmp == N) {
ans++;
return;
}
for (int i = 0; i < N; i++) {
if(islegal(r, i)){
arr[r][i]=1;
tmp++;
backTrack(r+1);
tmp--;
arr[r][i]=0;
}
}
}
bool islegal(int r, int c) {
for (int i = r - 1; i > -1; i--)
if (arr[i][c] == 1)return 0;
int i = r, j = c;
while (i > -1 && j > -1) {
if (arr[i][j] == 1)return 0;
i--;
j--;
}
i = r, j = c;
while (i > -1 && j < N) {
if (arr[i][j] == 1)return 0;
i--;
j++;
}
return 1;
}
};
查看22道真题和解析