题目先容
题解
法一:返回51题N皇后List的长度
法二:
- class Solution {
- private int n, ans;
- private boolean[] onPath, diag1, diag2;
- public int totalNQueens(int n) {
- this.n = n;
- onPath = new boolean[n];
- diag1 = new boolean[n * 2 - 1];
- diag2 = new boolean[n * 2 - 1];
- dfs(0);
- return ans;
- }
- private void dfs(int r) {
- if (r == n) {
- ans++; // 找到一个合法方案
- return;
- }
- for (int c = 0; c < n; c++) {
- int rc = r - c + n - 1;
- if (!onPath[c] && !diag1[r + c] && !diag2[rc]) {
- onPath[c] = diag1[r + c] = diag2[rc] = true;
- dfs(r + 1);
- onPath[c] = diag1[r + c] = diag2[rc] = false; // 恢复现场
- }
- }
- }
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |