leetcode--N 皇后 II(java)

news2024/11/24 3:42:06

N 皇后 II

  • leetcode 52 题 - N 皇后 II (困难)
  • 题目描述
  • 解题思路
  • 代码演示
  • 动态规划专题

leetcode 52 题 - N 皇后 II (困难)

原题链接:
https://leetcode.cn/problems/n-queens-ii/

题目描述

n 皇后问题 研究的是如何将 n 个皇后放置在 n × n 的棋盘上,并且使皇后彼此之间不能相互攻击。
给你一个整数 n ,返回 n 皇后问题 不同的解决方案的数量。

示例1:
在这里插入图片描述
输入:n = 4
输出:2
解释:如上图所示,4 皇后问题存在两个不同的解法。

示例2 :
输入:n = 1
输出:1

解题思路

我们用递归来解决这个问题:
我们一行一行的去验证哪列可以放置皇后,
(因此这个思路就推导出,需要循环加递归)

每到一行,我们只需要验证他前面皇后放的位置,来确定他哪里能放.
验证的方法:
同一列有的肯定不能放了
还有就是斜线位置怎么验证,
举个例子:
A 点(1,2) 和B 点 (2,3) 这两个点在一条斜线上,
那么 1-2 肯定等于 2 - 3 .,
也就是A 的行号 - B 的行号 等于A 的列号 - B 的列号.

代码演示

代码可以放到leetcode 上去测试

public int totalNQueens(int n) {
        if(n < 1){
            return 0;
        }
        // 这个数组 下标来记录行号 值代表列 记录哪行哪列有皇后
        int[] ans = new int[n];
        return process(0,ans,n);

    }
	/**
	* i 代表 行号
	* n 总共几个皇后
	* record 记录已经防置皇后的位置
	*/
    public int process(int i,int[]record,int n){
     	//i == n 代表所有行都校验通过才来到这里  所以返回一种方案
       if(i == n){
           return 1;
       }
    int res = 0;
    for(int j = 0;j < n;j++){
        if(checkPostion(record,i,j)){
        //皇后位置记录下来
            record[i] = j;
            //递归 行号加1 
            res += process(i+1,record,n);
        }
    }

    return res;

    }
	/**
	* 验证这个位置可以放不可以放
	*/
    public boolean checkPostion(int[]record,int i,int j){
       for(int k = 0; k < i;k++){
       //同一列有皇后不能放,和斜线有皇后不能放
           if(record[k] == j || Math.abs(record[k] - j) == Math.abs(i - k)){
               return false;
           }
       }
       return true;
    }

动态规划专题

纸牌博弈问题–动态规划

爬楼梯问题-从暴力递归到动态规划

走到指定位置有多少种方式-从暴力递归到动态规划

零钱兑换,凑零钱问题,从暴力递归到动态规划

斐波那契数列-从暴力递归到动态规划

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

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

相关文章

C++——菱形继承和虚继承

0.关注博主有更多知识 C知识合集 目录 1.什么是菱形继承和虚继承 2.菱形继承所带来的问题 3.虚继承的解决方案 3.1虚基表 4.继承与组合 菱形继承和虚继承本身就是一个"bug"&#xff0c;甚至在C程序员当中有"谁用谁尚阿比"的说法。至于为什么要谈菱…

[bugfix]解决visual studio installer双击后进度条一闪而过之后无反应的问题

问题描述&#xff1a; 源于跑一个神经网络代码&#xff0c;跑着跑着说需要microsoft visual C 14.0版本及其以上&#xff0c;然而我苦于根本下不了microsoft visuall C包的状态啊&#xff0c;而且点它没反应这件事已经持续了1年左右&#xff0c;因为没太耽误我做事我就一直没管…

21 条法则助你“玩转”分库分表

好好的系统&#xff0c;为什么要分库分表&#xff1f; 我们结合具体业务场景&#xff0c;以t_order表为例进行架构优化。由于数据量已经达到亿级别&#xff0c;查询性能严重下降&#xff0c;因此我们采用了分库分表技术来处理这个问题。具体而言&#xff0c;我们将原本的单库分…

java生成随机数

文章目录 java生成随机数导入包生成一个随机数生成一个 [ 0 , b o u n d ) \color{red}{[0,bound)} [0,bound)的随机数生成一个 20 \color{red}{20} 20到 90 \color{red}{90} 90的随机数总结现在尝试生成 − 10 \color{red}{-10} −10到 10 \color{red}{10} 10之间的随机数 ja…

《最新出炉》Python+Playwright自动化测试-2-playwright的API及其他知识

一.简介 上一篇我已经将PythonPlaywright的环境搭建好了&#xff0c;而且也简单的演示了一下三款浏览器的启动和关闭&#xff0c;是不是很简单啊。今天主要是把一篇的中的代码进行一次详细的注释&#xff0c;然后说一下playwright的API和其他相关知识点。那么首先将上一篇中的…

MyBatis——MyBatis注解开发

MyBatis编写SQL除了使用Mapper.xml还可以使用注解完成。当可以使用Auto Mapping时使用注解非常简单&#xff0c;不需要频繁的在接口和mapper.xml两个文件之间进行切换。但是必须配置resultMap时使用注解将会变得很麻烦&#xff0c;这种情况下推荐使用mapper.xml进行配置。 MyB…

问题解决:cmd中创建文件夹被拒绝访问。

问题&#xff1a; 在cmd中准备创建一个B盘node.js文件夹下的一个node_global文件被拒绝访问出错。 Microsoft Windows [版本 10.0.19045.2965] (c) Microsoft Corporation。保留所有权利。C:\Users\SueMagic>md B:\nodejs\node_global 拒绝访问。C:\Users\SueMagic>原因…

Learning C++ No.26 【深入学习位图】

引言&#xff1a; 北京时间&#xff1a;2023/5/30/15:30&#xff0c;刚睡醒&#xff0c;两点的闹钟&#xff0c;硬是睡到了2点40&#xff0c;那种睡不醒的感觉&#xff0c;真的很难受&#xff0c;但是没办法&#xff0c;欠的课越来越多&#xff0c;压的我喘不过气了都&#xf…

华为OD机试真题B卷 Java 实现【整理扑克牌】,附详细解题思路

一、题目描述 给定一组数字&#xff0c;表示扑克牌的牌面数字&#xff0c;忽略扑克牌的花色&#xff0c;请按如下规则对这一组扑克牌进行整理&#xff1a; 步骤1 对扑克牌进行分组&#xff0c;形成组合牌&#xff0c;规则如下&#xff1a; 当牌面数字相同张数大于等于4时&a…

【Python Selenium】零基础也能轻松掌握的学习路线与参考资料

Python Selenium是一种基于Python编程语言的自动化测试框架&#xff0c;用于Web应用程序的测试和自动化。Python Selenium是一个非常流行的工具&#xff0c;它可以通过模拟用户行为来测试Web应用程序&#xff0c;同时还可以通过Python编写脚本实现自动化测试&#xff0c;并且可…

Spring Boot如何实现自定义Starter?

Spring Boot如何实现自定义Starter&#xff1f; 在 Spring Boot 中&#xff0c;Starter 是一种特殊的依赖&#xff0c;它可以帮助我们快速地集成一些常用的功能&#xff0c;例如数据库连接、消息队列、Web 框架等。在本文中&#xff0c;我们将介绍如何使用 Spring Boot 实现自…

python视频图片美化

python视频图片美化 git clone https://github.com/s0md3v/roop.git If you aren’t good with following commands, here’s a video tutorial install python (and pip too if neeed) install git install ffmpeg If you are on Windows, install “Microsoft Visual C 14”…

Cadence OrCAD Capture 搜索的到的元器件无法在图纸中找到的问题

🏡《总目录》 目录 1,概述2,问题现象3,问题原因解决方案4,总结B站关注“硬小二”浏览更多演示视频 1,概述 本文简单介绍在使用Capture绘图时,搜索元器件或其他对象,存在搜索结果,但在图纸中无法找到的原因和解决方案。 2,问题现象 如下图所示搜索U20后,存在搜索结果…

javascript基础十二:JavaScript中的事件模型如何理解?

一、事件与事件流 javascript中的事件&#xff0c;可以理解就是在HTML文档或者浏览器中发生的一种交互操作&#xff0c;使得网页具备互动性&#xff0c; 常见的有加载事件、鼠标事件、自定义事件等 由于DOM是一个树结构&#xff0c;如果在父子节点绑定事件时候&#xff0c;当触…

浅析Redis集群数据倾斜问题及解决方法

概 述 在服务端系统服务开发中&#xff0c;缓存是一种常用的技术&#xff0c;它可以提高系统对请求的处理效率&#xff0c;而redis又是缓存技术栈中的一个佼佼者&#xff0c;广泛的应用于各种服务系统中。在大型互联网服务中&#xff0c;每天需要处理的请求和存储的缓存数据…

【Java系列】Mybatis-Plus 使用方式介绍

1 Mybatis-Plus简介 Mybatis-Plus 提供了多种方式来执行 SQL&#xff0c;包括使用注解、XML 映射文件和 Lambda 表达式等。其中&#xff0c;使用 Lambda 表达式是 Mybatis-Plus 推荐的方式&#xff0c;因为它更加直观和类型安全。 2 使用方法 1 Lambda 表达式执行 SQL 以下是…

pix2pixHD---loss---损失函数

在Pix2PixHDModel代码中首先定义损失&#xff1a; 首先看第一个&#xff1a;输入的两个参数use_gan_feat_loss, use_vgg_loss默认为false&#xff0c;则前缀有not&#xff0c;所以两个参数都是True。 def init_loss_filter(self, use_gan_feat_loss, use_vgg_loss):flags (Tr…

PCIE知识点-022:PCIe 参考时钟结构

图1&#xff1a;参考时钟结构示意图[4] 1. Common Refclk Architecture Common Refclk Architecture&#xff0c;即同源参考时钟架构&#xff0c;PCIe收发设备共用一个时钟源&#xff0c;是目前是使用最为广泛的方案。 缺点&#xff1a; 对于适用同一 Common Clock 作为参考时…

第四章 运行时数据区

文章目录 前言一、&#x1f697; 双亲委派机制1、 问题的引出&#xff1a;是否会被外来程序对系统进行破坏2、总结3、双亲委派的优势4、沙箱安全机制5、其他 二、&#x1f692; 运行时数据区线程 三、&#x1f6fa; PC 寄存器概述&#xff08;记录下一条程序指令的地址&#xf…

Vulnhub: dpwwn: 1靶机

kali&#xff1a;192.168.111.111 靶机&#xff1a;192.168.111.131 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.131 爆破出mysql的root用户为空密码 hydra -l root -P /usr/share/wordlists/rockyou.txt 192.168.111.131 -s 3306 mysq…