2025年- H98-Lc206--51.N皇后(回溯)--Java版

1.题目描述

在这里插入图片描述
在这里插入图片描述

2.思路

二维数组集合
(1)N皇后规则
1)不能同行(同一行不能出现2个皇后)
2)不能同列(同一列不能出现2个皇后)
3)不能说45度或135度(斜对角线不能出现2个皇后)

n代表树高,也就是嵌套for循环的行数

3.代码实现

class Solution {public List<List<String>> solveNQueens(int n) {//三维结果数组,用于存储最终所有符合条件的解法。List<List<String>> result=new ArrayList<>();//初始化一个 n x n 的棋盘,用字符数组表示char[][] board=new char[n][n];//先构建棋盘,用.填满,表示该位置为空。for(int i=0;i<n;i++){for(int j=0;j<n;j++){board[i][j]='.';}}//1.确定递归函数的参数backTracking(result,board,0,n);return result;}   //1.确定递归函数的参数//    - solutions: 存储所有解法的列表。//    - board: 当前的棋盘状态。//    - row: 当前正准备放置皇后的行号。从第 0 行开始,调用回溯函数//    - n: 棋盘的大小。//     void backTracking(private void backTracking(List<List<String>>result,char[][]board,int row,int n){//2.确定终止条件,遍历到最后一行if(row==n){result.add(strContruct(board));return;}//3.单层搜索条件for(int col=0;col<n;col++){if(isValid(board,row,col,n)){board[row][col]='Q';// “每一行只放一个皇后” 的规则。因为函数每次被调用时,只处理 row 这一行。在这一行的 for 循环里,它会尝试在 (row, 0), (row, 1), (row, 2)... 等位置放皇后,但一次只会放一个。放下一个之后,它就立刻递归到 row + 1 行去了,所以,“不同行” 是由这个递归结构保证的。backTracking(result,board,row+1,n);board[row][col]='.';}}}private boolean isValid(char[][]board,int row,int col,int n){//不能同列for(int i=0;i<row;i++){if(board[i][col]=='Q'){return false;}}//不能是对角线 45度for(int i=row-1, j=col-1;i>=0&&j>=0;i--,j--){if(board[i][j]=='Q'){return false;}}for(int i=row-1,j=col+1;i>=0&&j<n;i--,j++){if(board[i][j]=='Q'){return false;}}return true;}private List<String> strContruct(char[][] board){// 将 char[][] 棋盘转换为 List<String> 的格式List<String> res=new ArrayList<>();for(int i=0;i<board.length;i++){String curstr=new String(board[i]);res.add(curstr);}return res;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93744.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93744.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5G + AI + 云:电信技术重塑游戏生态与未来体验

在数字娱乐蓬勃发展的今天&#xff0c;游戏产业已然成为科技创新的前沿阵地。电信网络也经历了一场深刻的蜕变&#xff0c;从最初仅仅是 “内容传输管道”&#xff0c;摇身一变成为与游戏深度绑定的技术共生体。5G 不断刷新着体验的边界&#xff0c;AI 彻底颠覆传统的创作模式&…

【React Hooks】封装的艺术:如何编写高质量的 React 自-定义 Hooks

【React Hooks】封装的艺术&#xff1a;如何编写高质量的 React 自-定义 Hooks 所属专栏&#xff1a; 《前端小技巧集合&#xff1a;让你的代码更优雅高效》 上一篇&#xff1a; 【React State】告别 useState 滥用&#xff1a;何时应该选择 useReducer 作者&#xff1a; 码力…

华为GaussDB的前世今生:国产数据库崛起之路

在数据库领域&#xff0c;华为GaussDB已成为一颗耀眼的明星&#xff0c;为企业核心业务数字化转型提供坚实的数据底座。但这并非一蹴而就&#xff0c;其背后是长达二十余年的技术沉淀、战略投入与持续创新。本文将深入探寻华为GaussDB的历史沿革与核心技术细节&#xff0c;展现…

数据结构初阶(16)排序算法——归并排序

2.4 归并排序 归并排序&#xff08;Merge Sort&#xff09;是基于分治思想的经典排序算法。核心逻辑&#xff1a; 分而治之——把复杂排序问题拆分成简单子问题解决&#xff0c;再合并子问题的结果。联系链表的合并&#xff1a;两个有序链表l1、l2创建新链表l3&#xff08;带头…

MATLAB实现匈牙利算法求解二分图最大匹配

MATLAB实现匈牙利算法求解二分图最大匹配 匈牙利算法&#xff08;也称为Kuhn-Munkres算法&#xff09;是解决二分图最大匹配问题的经典算法。 代码 function [matching, max_match] hungarian_algorithm(adjMatrix)% HUNGARIAN_ALGORITHM 实现匈牙利算法求解二分图最大匹配% 输…

自定义table

更好<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8"><title>数据表格</title><style>* {margin: 0;padding: 0;box-sizing: border-box;font-size: 14px;}html,body {width: 100%;height: 100%…

面向R语言用户的Highcharts

如果您喜欢使用 R 进行数据科学创建交互式数据可视化&#xff0c;那么请你收藏。今天&#xff0c;我们将使用折线图、柱状图和散点图来可视化资产回报。对于我们的数据&#xff0c;我们将使用以下 5 只 ETF 的 5 年月回报率。 SPY (S&P500 fund)EFA (a non-US equities fun…

【测试工具】OnDo SIP Server--轻松搭建一个语音通话服务器

前言 Ondo SIP Server 是一款基于 SIP(Session Initiation Protocol)协议的服务器软件&#xff0c;主要用于实现 VoIP(Voice over IP)通信&#xff0c;支持语音通话、视频会议等多媒体会话管理&#xff0c;非常适合学习和测试VoIP的基本功能。本文介绍Ondo SIP Server的安装、…

疯狂星期四文案网第42天运营日记

网站运营第42天&#xff0c;点击观站&#xff1a; 疯狂星期四 crazy-thursday.com 全网最全的疯狂星期四文案网站 运营报告 今日访问量 今日搜索引擎收录情况 网站优化点 优化一些发现的seo错误 增加颜文字栏目 增加了一些tag

使用空模型实例调用辅助函数,确定在量化过程中哪些层会被跳过(43)

在Facebook的OPT-350M中,模型的头部(lm_head)与解码器的嵌入标记层(decoder.embed_tokens)共享其权重。 print(model.model.decoder.embed_tokens) print(model.lm_head)输出结果 Embedding(50272, 512

从0-1使用Fastmcp开发一个MCP服务,并部署到阿里云百炼 -持续更新中

目的&#xff1a; 在本地使用fastmcp开发一个mcp,然后注册到阿里云的百炼里面。实现在百炼里面创建智能体的时候直接引用自己开发的MCP 已完成&#xff1a;本地环境安装 待完成&#xff1a; 1.根据需求实现一个MCP中可以调用某应用的多个API即 mcp.tool()、mcp.prompt()、接入大…

设计模式之汇总

设计模式 零、设计原则 0.1 单一职责 0.2 接口隔离 0.3 开闭原则 0.4 依赖倒置0.5 迪米特法则&#xff0c;最小知道原则用户关机 只和朋友通信 朋友条件&#xff1a; 1&#xff09;当前对象本身&#xff08;this&#xff09; 2&#xff09;以参量形式传入到当前对象方法中的对象…

第6章 Decoder与Encoder核心组件

前言 Netty从底层Java通道读取ByteBuf二进制数据&#xff0c;传入Netty通道的流水线&#xff0c;随后开始入站处理。在入站处理过程中&#xff0c;需要将ByteBuf二进制类型解码成Java POJO对象。这个解码过程可以通过Netty的Decoder&#xff08;解码器&#xff09;去完成。 在…

[已解决]当启动 Spring Boot 应用时出现 Using generated security password xxx提示

当启动 Spring Boot 应用时出现 Using generated security password xxx提示当启动 Spring Boot 应用时出现 Using generated security password xxx提示&#xff0c;这是 Spring Security 自动配置的默认行为&#xff0c;通常发生在你​​未自定义安全配置​​但引入了 Spring…

自动分析需求,PRD 生成只需 SOLO 一步!

资料来源&#xff1a;火山引擎-开发者社区 写不清需求&#xff1f;PRD 难产&#xff1f;开发总跑偏&#xff1f;这些痛点&#xff0c;SOLO 来解决。 TRAE SOLO 是行业首个 Context Engineer。它不止协助编码&#xff0c;更能基于精准上下文理解和工具调用&#xff0c;从构思、…

物联网软件开发过程中,数据流图(DFD),用例图,类图,活动图,序列图,状态图,实体关系图(ERD),BPMN(业务流程建模)详解分析

概述软件开发过程中&#xff0c;特别是在物联网&#xff08;IoT&#xff09;场景中&#xff0c;数据流图&#xff08;DFD&#xff09;、UML图&#xff08;包括用例图、类图、活动图、序列图、状态图&#xff09;、实体关系图&#xff08;ERD&#xff09;和业务流程建模&#xf…

Mac(一)常用的快捷键整理

目录1、系统操作与窗口管理2、应用与窗口切换3、常规编辑操作4、文本导航与光标控制✏️5、文本格式与文档功能&#xff08;支持应用中&#xff09;6、截图快捷键7、Safari 浏览器快捷键8、Finder 快捷键&#xff08;文件管理&#xff09;9、Fn / Globe 功能键&#xff08;部分…

HAProxy使用方法以及和LVS区别

HAProxy简介HAProxy是法国开发者 威利塔罗(Willy Tarreau) 在2000年使用C语言开发的一个开源软件 是一款具备高并发(万级以上)、高性能的TCP和HTTP负载均衡器 支持基于cookie的持久性&#xff0c;自动故障切换&#xff0c;支持正则表达式及web状态统计LVS 与 HAProxy 的核心区别…

超越“小作文”:大模型指令设计的进阶之路——优化知识信噪比

文章摘要&#xff1a;你是否认为&#xff0c;给大模型的指令&#xff08;Prompt&#xff09;写得越详细越好&#xff1f;真的是信息越多&#xff0c;模型就越懂你吗&#xff1f;本文将深入探讨一个反直覺的觀點&#xff1a;初級的指令設計專注於資訊的堆砌&#xff0c;而高階的…

elasticsearch-集成prometheus监控(k8s)

一. 简介&#xff1a; 关于elasticsearch的简介和部署&#xff0c;可以参考单独的文章elasticsearch基础概念与集群部署-CSDN博客&#xff0c;这里就不细说了。这里只讲讲如何在k8s中部署export并基于prometheus做es的指标采集。 二. 实现方式&#xff1a; 首先我们需要先部署…