代码随想录算法训练营29期Day30|LeetCode 332,51,37

 文档讲解:回溯算法总结篇  重新安排行程  N皇后  解数独

51.N皇后

题目链接:https://leetcode.cn/problems/permutations/description/

思路:

        本题的基本含义就是有个N*N的棋盘,需要我们放N个皇后在上面,满足不能有任意两个皇后位于同一行或者同一列或者同一对角线。

        这题我们可以按行搜索,每行放一个,这样保证了行不重复,递归边界条件为放到第N+1行,这证明前N行找出来了一种答案。下面考虑列和对角线如何不重复:

        1.针对列,我们开设一个全局bool数组,标记哪列已经放上了。在搜索每行枚举每个点时,判断该列是否有皇后即可,有就跳过,没有放上皇后搜下一行。

        2.针对正对角线,我们知道位于同一正对角线上的点有一个性质:横纵坐标之和相等,因此我们针对坐标和开一个全局bool数组,标记放过皇后的点的坐标和即可,逻辑类似1。

        3.针对斜对角线,有类似2的性质:横纵坐标之差相等。也针对这个差开个标记数组即可。

        有上面三个标记数组,按行搜索就行了。

核心代码:

class Solution {
private:bool flag[10],book1[20],book2[20];int maxline;vector<string> path;vector<vector<string>> ans;void dfs(int x){if(x==maxline){ans.push_back(path);return;}for(int i=0;i<maxline;i++){if(flag[i]||book1[x+i]||book2[i-x+maxline]) continue;string s="";for(int j=0;j<i;j++) s+=".";s+="Q";for(int j=i+1;j<maxline;j++) s+=".";path.push_back(s);flag[i]=true;book1[x+i]=true;book2[i-x+maxline]=true;dfs(x+1);flag[i]=false;book1[x+i]=false;book2[i-x+maxline]=false;path.pop_back();}return;}
public:vector<vector<string>> solveNQueens(int n) {maxline=n;memset(flag,false,sizeof(flag));memset(book1,false,sizeof(book1));memset(book2,false,sizeof(book2));dfs(0);return ans;}
};

今日总结

        今日学习时长3h,题目很难,我只会做N皇后,还是因为以前做过,所以很快就写出来了。第一道基本想出了思路,但是映射关系定义的不好就没写出来,没想到map套map。第三题想了很久但没啥好思路,今天没时间总结其他两道了,放在周末吧。

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

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

相关文章

基于Java SSM框架实现在线考试系统项目【项目源码+论文说明】

基于java的SSM框架实现在线考试系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#…

2024年,AI大模型有哪些新看点?

自ChatGPT-4问世以来&#xff0c;过去的大半年中&#xff0c;我们虽然没有在ChatGPT发布一周年之际等来“ChatGPT-5”&#xff0c;但围绕ChatGPT&#xff0c;仍有不少新看点。其中的一些引发我们对人工智能(AI)与人的关系进行新的思考&#xff0c;另一些则为AI的发展和安全带来…

16-语句、表达式和海象操作符

让我们从两行最简单的 Python 代码开始。 >>> name piglei >>> print(fHello {name}!) Hello piglei!这是一个“Hello World”程序&#xff0c;你也许已经见过它无数次&#xff0c;对里面的每个字母都了如指掌。但你可能从未意识到&#xff0c;上面两行代码…

modelscope下载模型

# 私有模型下载&#xff0c;前提是您有响应模型权限 方法1 git lfs install git clone http://oauth2:your_git_tokenwww.modelscope.cn/<namespace>/<model-name>.git 如何获取git token 用您的账号登录https://www.modelscope.cn &#xff0c;在个人中心->访…

正确看待华为鸿蒙……是盲目跟风吗?

先要了解纯血鸿蒙是什么&#xff1f;与之前的套壳Android版本区别在哪&#xff1f;了解这核心东西之后才会真正的看出“纯血鸿蒙”的未来与发展。 纯血鸿蒙全栈自研 HarmonyOS NEXT系统底座全线自研&#xff0c;去掉了传统的Linux内核以及AOSP等代码&#xff0c;仅支持鸿蒙内…

3分钟搭建幻兽帕鲁私服,无需任何命令代码,点点鼠标一键部署

想玩《幻兽帕鲁》和朋友们一起乐呵呵&#xff1f;这个指南教你怎么在阿里云上弄个游戏服务器&#xff0c;超简单。点几下鼠标&#xff0c;2、3分钟就搞定&#xff0c;不用头疼设置那些复杂的东西。一键部署幻兽帕鲁私服&#xff0c;告诉你私服怎么搭建 本次利用阿里云服务器的…

极限【高数笔记】

【分类】分为了两大类&#xff0c;一个是数列的极限&#xff0c;一个是函数的极限 【数列的极限】 1.定义&#xff1a; 简单来讲&#xff0c;就是&#xff0c;当n无限趋近于无穷时&#xff0c;数列{an}无限趋近一个常数A&#xff0c;此时&#xff0c;常数A就是它们此时情况下的…

有趣的代码(简单)

1.代码1 #include<stdio.h> #include<string.h> #include<windows.h> #define _CRT_SECURE_NO_WARNINGS 1 void love() {system("color 4");printf(" **** ***************** ** …

springboot快速写接口

1. 建proj形式 name会变成文件夹的名字&#xff0c;相当于你的项目名称 基础包 2. 基础依赖 3. 配置数据库 这里要打开mysql&#xff0c;并且创建数据库 方法&#xff1a; 安装好数据库&#xff0c;改好账号密码用navicat来建表和账号配置properties.yml文件即可 4.用res…

Aleo项目详细介绍-一个兼顾隐私和可编程性的隐私公链

Aleo上线在即&#xff0c;整理一篇项目的详细介绍&#xff0c;喜欢的收藏。有计划做aleo节点的可交流。 一、项目简介 Aleo 最初是在 2016 年构思的&#xff0c;旨在研究可编程零知识。公司由 Howard Wu、Michael Beller、Collin Chin 和 Raymond Chu 于 2019 年正式成立。 …

【K12】运用tk控件演示欧姆定律串联电阻小应用

上述代码是一个基于Python的图形用户界面&#xff08;GUI&#xff09;应用程序&#xff0c;用于演示欧姆定律。用户可以通过输入电阻值来计算电流&#xff0c;并在图形上显示结果。该程序使用了Tkinter库来创建GUI&#xff0c;matplotlib库来绘制图形&#xff0c;以及numpy库进…

Unity出AAB包资源加载过慢

1&#xff09;Unity出AAB包资源加载过慢 2&#xff09;Unity IL2CPP打包&#xff0c;libil2cpp.so库中没有Mono接口 3&#xff09;如何在URP中正确打出Shader变体 4&#xff09;XLua打包Lua文件粒度问题 这是第370篇UWA技术知识分享的推送&#xff0c;精选了UWA社区的热门话题&…

Ubuntu20.04输入法异常导致的黑屏:fcitx和ibus输入法的卸载与安装

Ubuntu20.04输入法异常导致的黑屏&#xff1a;fcitx和ibus输入法的卸载与安装_ubuntu卸载fcitx-CSDN博客 问题背景 系统&#xff1a;Ubuntu20.04 由于fcitx的不完整配置&#xff0c;导致fcitx输入法无法正常工作。决心卸载所有输入法&#xff0c;重新安装。但是由于在没有完整…

ChatGPT与文心一言:谁更胜一筹?

在人工智能领域&#xff0c;语言模型的发展日新月异&#xff0c;ChatGPT与文心一言作为市面上两款备受瞩目的AI助手&#xff0c;各自具有一定的优势。本文将从智能回复、语言准确性和知识库丰富度等方面&#xff0c;对这两大AI助手进行比较&#xff0c;以期为大家提供一些参考。…

算法37:最大矩形(力扣84、85题)---单调栈

力扣84题&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 输入…

[每日一题] 01.26 - 最长连号

最长连号 n int(input()) lis list(map(int,input().split())) res for i in range(n - 1):if lis[i] 1 lis[i 1]:res 1else:res 0res res.split(0) print(len(max(res)) 1)或者&#xff1a; n int(input()) lis list(map(int,input().split()))Max 1 for i in …

研发日记,Matlab/Simulink避坑指南(五)——CAN解包 DLC Bug

文章目录 前言 背景介绍 问题描述 分析排查 解决方案 总结 前言 见《研发日记&#xff0c;Matlab/Simulink避坑指南&#xff08;一&#xff09;——Data Store Memory模块执行时序Bug》 见《研发日记&#xff0c;Matlab/Simulink避坑指南(二)——非对称数据溢出Bug》 见《…

win10安装redis并配置加自启动(采用官方推荐unix子系统)

记录&#xff0c;为啥有msi安装包&#xff0c;还这么麻烦的用linux版本redis的安装方式&#xff0c;是因为从github上下载别人制作的msi报毒&#xff0c;还不止一处&#xff0c;这种链接数据库的东西&#xff0c;用别人加工过的&#xff0c;都报毒了还用就是傻逼了。 所以采用…

spring(三):IOC介绍及代码实现

1. IoC容器概述 IoC 是 Inversion of Control 的简写&#xff0c;译为“控制反转”&#xff0c;它不是一门技术&#xff0c;而是一种设计思想&#xff0c;是一个重要的面向对象编程法则&#xff0c;能够指导我们如何设计出松耦合、更优良的程序。 Spring 通过 IoC 容器来管理…

【第四天】蓝桥杯备战

题 1、求和2、天数3、最大缝隙 1、求和 https://www.lanqiao.cn/problems/1442/learning/ 解法&#xff1a;字符串方法的应用 import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scann…