力扣:51. N 皇后

回溯解法思路:

1.用二维char数组来模拟放置皇后操作,同时要先把先将二维数组中全部赋值为'.'来表示空位。

再调用回溯函数 ,终止条件为遍历的行数等于n时结束遍历,把char【】【】类型的值加入到集合li1中,再加加入过程中要将char【】【】类型转化成LIst<String>类型再把li2集合加入到li1集合中去。

2.用for循环来遍历全部的操作,用jiancha()函数检查char【row】【i】节点的同一行和同一列和同一斜线上是否用其他皇后。如果没有,在char【row】【i】放置皇后,再进行递归操作,来代替for嵌套继续遍历下去,结束操作后回溯节点。

class Solution {//接收最后返回的值List<List<String>> li1=new ArrayList<>();public List<List<String>> solveNQueens(int n) {//声明一个二维数组来进行模拟放皇后的操作char[][] ch=new char[n][n];//先将二维数组中全部赋值为'.'来表示空位。for(int i=0;i<n;i++){for(int j=0;j<n;j++){ch[i][j]='.';}}//调用回溯函数huisu(ch,0,n);return li1;}//回溯行数public void huisu(char[][] ch,int row,int n){//用于接收单个最后符合条件的防置法案List<String> li2=new ArrayList<>();//终止条件if(row==n){//将char【】【】数组转化加入到集合li2中for (char[] chars : ch) {li2.add(new String(chars));}//把符合放置法案的加入li1集合中li1.add(new ArrayList<>(li2));return ;}//进行遍历全部操作for(int i=0;i<n;i++){//用jiancha()函数检查char【row】【i】节点的同一行和同一列和同一斜线上是否用其他皇后。if(jiancha(row,i,n,ch)){//再char【row】【i】放置皇后操作ch[row][i]='Q';//进行递归操作,来代替for嵌套继续遍历下去huisu(ch,row+1,n);//结束后,回溯操作ch[row][i]='.';}}}//jiancha函数用于检查char【row】【i】节点的同一行和同一列和同一斜线上是否用其他皇后。public boolean jiancha(int row,int i,int n,char[][] ch){//检查同一行for(int k=0;k<n;k++){if(ch[row][k]=='Q'){return false;}}//检查同一列for(int p=0;p<n;p++){if(ch[p][i]=='Q'){return false;}}//检查左上方斜线for(int l=row-1,t=i-1;l>=0&&t>=0;l--,t--){if(ch[l][t]=='Q'){return false;}}//检查右上方斜线for(int a=row-1,b=i+1;a>=0&&b<=n-1;a--,b++){if(ch[a][b]=='Q'){return false;}}return true;}
}

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

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

相关文章

notepad++成功安装后默认显示英文怎么设置中文界面?

前几天使用电脑华为管家清理电脑后&#xff0c;发现一直使用的notepad软件变回了英文界面&#xff0c;跟刚成功安装的时候一样&#xff0c;那么应该怎么设置为中文界面呢&#xff1f;具体操作如下&#xff1a; 1、打开notepad软件&#xff0c;点击菜单栏“Settings – Prefere…

最新基于MATLAB 2021b的机器学习、深度学习实践

基于MATLAB 2021b的机器学习和深度学习实践是一个广泛的主题&#xff0c;下面是一些基本的步骤和资源&#xff0c;可以帮助你开始&#xff1a; 安装MATLAB 2021b: 首先&#xff0c;你需要安装MATLAB 2021b。你可以从MathWorks网站下载并安装最新版本的软件。学习MATLAB基础知识…

Modern C++ 内存篇1 - std::allocator VS pmr

大年三十所写&#xff0c;看到就点个赞吧&#xff01;祝读者们龙年大吉&#xff01;当然有问题欢迎评论指正。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. 前言 从今天起我们开始内存相关的话题&#xff0c;内存是个很大的话题&#xff0c;一时不…

探索未来:集成存储器计算(IMC)与深度神经网络(DNN)的机遇与挑战

开篇部分&#xff1a;人工智能、深度神经网络与内存计算的交汇 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;已经成为科技领域的一股强大力量&#xff0c;而深度神经网络&#xff08;DNN&#xff09;则是AI的核心引擎之一。DNN是一种模仿人类神经系统运作…

sqli.bypass靶场本地小皮环境(1-5关)

1、第一关 http://sqli.bypass/index1.php 单引号报错id1 双引号正常id1&#xff0c;应该是单引号闭合 id1--注释符用不了&#xff0c;%20和都用不了 %0a可以用 没有报错&#xff0c;用布尔盲注&#xff0c;POC&#xff1a;id1%0aand%0asubstr(ss,1,1)s%0aand%0a11 脚本跑数…

跨模态行人重识别都需要学什么

跨模态行人重识别&#xff08;Cross-Modality Person Re-identification, 简称Cross-Modality Re-ID&#xff09;是计算机视觉领域的一项挑战性任务&#xff0c;旨在跨越不同模态之间&#xff08;例如&#xff0c;可见光与红外线图像&#xff09;识别同一行人。该任务涉及图像处…

大模型学习笔记二:prompt工程

文章目录 一、经典AI女友Prompt二、prompt怎么做&#xff1f;1&#xff09;注重格式&#xff1a;2&#xff09;prompt经典构成3&#xff09;简单prompt的python询问代码4&#xff09;python实现订阅手机流量套餐的NLU5&#xff09;优化一&#xff1a;加入垂直领域推荐6&#xf…

Django开发_21_中间键

一、说明 &#xff08;一&#xff09;根据实际测试&#xff0c;中间键的文件名不是固定的&#xff0c;可以自定义&#xff0c;比如&#xff1a;my_middleware.py、middleware.py都不影响实际的运行 &#xff08;二&#xff09;根据实际测试&#xff0c;中间键文件放在根目录下…

GPT-4模型中的token和Tokenization概念介绍

Token从字面意思上看是游戏代币&#xff0c;用在深度学习中的自然语言处理领域中时&#xff0c;代表着输入文字序列的“代币化”。那么海量语料中的文字序列&#xff0c;就可以转化为海量的代币&#xff0c;用来训练我们的模型。这样我们就能够理解“用于GPT-4训练的token数量大…

homework day6

第五章 静态成员与友元 一、填空题 1、一个类的头文件如下所示&#xff0c;num初始化值为5&#xff0c;程序产生对象T&#xff0c;且修改num为10&#xff0c;并使用show()函数输出num的值10。 #include <iostream.h> class Test { private: static int num; publi…

Java 错误 java.util.InputMismatchException

本文将讨论Java编程语言主线程中的 java.util.InputMismatchException。 Java 中的 java.util.InputMismatchException 每当 JVM 收到一种数据作为输入但需要另一种类型的值&#xff08;这表明数据不匹配&#xff09;时&#xff0c;它就会抛出 java.util.InputMismatchExcepti…

从一到无穷大 #23 《流计算系统图解》书评

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言内容总结 引言 春节假期回到家里断然是不会有看纸质书的时间的。造化弄人&#…

HCIA--ACL和远程登陆实验

1.划分网段&#xff0c;配IP地址&#xff0c;启用OSPF协议&#xff1a; AR1配置&#xff1a; [Huawei]sys R1 [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip add 192.168.1.1 24 [R1-GigabitEthernet0/0/0]int g0/0/1 [R1-GigabitEthernet0/0/1]ip add 12.1.1.1 24 [R1-Gigabi…

STM32的ADC电压采集

时间记录&#xff1a;2024/2/9 一、ADC相关知识点 &#xff08;1&#xff09;STM32的ADC时钟不要超过14MHz&#xff0c;不然结果的准确率将下降 &#xff08;2&#xff09;ADC分为规则组和注入组&#xff0c;规则组相当于正常运行的程序&#xff0c;注入组相当于中断可以打断…

贵金属交易包括哪些?香港有哪些贵金属交易平台?

随着金融市场的不断发展&#xff0c;贵金属交易作为一种投资方式&#xff0c;越来越受到投资者的关注。贵金属交易不仅具有投资价值&#xff0c;还能够为投资者提供规避风险和保值的工具。本文将介绍贵金属交易的种类和香港的贵金属交易平台。 一、贵金属交易的种类 贵金属交…

2024.2.7-8 寒假训练记录(21)

文章目录 洛谷P3193 [HNOI2008] GT考试ATC abc339E Smooth SubsequenceATC abc339F Product Equality 洛谷P3193 [HNOI2008] GT考试 题目链接 KMPdp矩阵快速幂 还没有理解得很清楚&#xff0c;主要是对KMP理解还不够深刻 #include <bits/stdc.h>using namespace std;…

C++泛型编程:typename和class关键字的区别

在STL中基本上都使用了模板类的声明&#xff0c;即template。在模板类的声明中&#xff0c;有两种方式&#xff1a; template <class T> template <typename T> 这里&#xff0c;class和typename是相同的。 也就是说&#xff0c;在声明模板类型参数的时候&#xf…

算法——数论——GCD和LCM

目录 GCD&#xff08;最大公约数&#xff09; 1、欧几里得算法 LCM&#xff08;最小公倍数&#xff09; 一、试题 算法训练 抗击虫群 GCD&#xff08;最大公约数&#xff09; 整数 a 和 b 的最大公约数是指能同时整除 a 和 b 的最大整数&#xff0c;记为 gcd(a,b)-a的因子和…

为什么在产品设计和制造过程中要采用FMEA——SunFMEA软件

在产品设计和制造过程中&#xff0c;FMEA是一种非常重要的工具&#xff0c;用于评估潜在的故障模式及其对产品性能的影响。通过分析产品设计或流程中可能出现的故障模式&#xff0c;并评估其对产品性能和客户满意度的潜在影响&#xff0c;来预测和防止产品在生产和运行过程中出…

火星符号运算 - 华为OD统一考试

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 已知火星人使用的运算符号为 #和$ 其与地球人的等价公式如下 x#y2*x3*y4 x$y3*xy2x y是无符号整数。地球人公式按照c语言规则进行计算。火星人公式中&#xff0…