力扣 困难 52.N皇后II

打印 上一主题 下一主题

主题 868|帖子 868|积分 2604

题目先容


题解

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曂沅仴駦

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表