当前位置: 首页 > news >正文

【hot100-java】N 皇后

回溯篇

视频题解 

真的裂开了,多看视频题解。

class Solution {public List<List<String>> solveNQueens(int n) {List<List<String>>ret=new ArrayList<>();int []col=new int[n];boolean[] onPath=new boolean[n];boolean[] diag1=new boolean[n*2-1];boolean[] diag2=new boolean[n*2-1];dfs(0,n,col,onPath,diag1,diag2,ret);return ret;}private void dfs(int r,int n,int[] col,boolean[] onPath,boolean[] diag1,boolean[] diag2,List<List<String>>ret){if(r==n){List<String>board=new ArrayList<>(n);for(int c:col){char[] row = new char[n];Arrays.fill(row,'.');row[c]='Q';board.add(new String(row));}ret.add(board);return;}for (int c=0;c<n;c++){int rc=r-c+n-1;if(!onPath[c]&&!diag1[r+c]&&!diag2[rc]){col[r]=c;onPath[c]=diag1[r+c]=diag2[rc]=true;dfs(r+1,n,col,onPath,diag1,diag2,ret);//恢复现场onPath[c]=diag1[r+c]=diag2[rc]=false;}}}
}


http://www.mrgr.cn/news/46825.html

相关文章:

  • Linux安装Docker教程(详解)
  • 使用C# CEFSharp在WPF中开发桌面程序实现同一网站多开功能
  • 大模型agent学习(day1)
  • 服务器证书、数字证书和加解密算法
  • 如何使用 Vue 自定义指令实现元素拖拽支撑横向和纵向拖拽
  • 【从零开始使用系列】StyleGAN2:开源图像生成网络——环境搭建与基础使用篇(附大量测试图)
  • PMP--冲刺题--解题--71-80
  • 【C++差分数组】P1672何时运输的饲料
  • Golang | Leetcode Golang题解之第468题验证IP地址
  • 深入解析RBAC模型的数据库设计方案
  • PGMP-05相关方
  • IDEA调试模式下,单步执行某修改方法后,数据库内容没有更新,同时也无法手动修改对应数据
  • C语言 | Leetcode C语言题解之第468题验证IP地址
  • IDEA必装的插件:Spring Boot Helper的使用与功能特点
  • 冷热数据分离
  • Python中的列表:全面解析与应用
  • 【C语言】值传递和指针传递
  • Excel重新踩坑1:加密保护工作簿、编辑保护工作簿、编辑保护工作表、允许编辑区域;填充柄;同时编辑多个单元格为同一个值
  • COLMAP安装踩坑记录
  • 社工字典生成工具 —— CeWL 使用手册
  • QDateEdit Class
  • 【python】OS(文件管理)模块(库)
  • 1143. 最长公共子序列
  • 【Linux】—Xshell、Xftp安装
  • 新赚米渠道,天工AI之天工宝典!
  • 力扣21~25题