力扣刷题记录(10)LeetCode:51、37

51. N 皇后

应为各个皇后之间不能同行,所以一行只能有一个皇后。我们可以遍历每一行的各个位置,判断该位置是否可以放置皇后,一行放置一个。当一个皇后的位置已经在这一行确定了,我们就可以遍历下一行来确定下一个皇后在下一行的位置,是不是像是在不同集合里各取一个数。和17.电话号码的字母组合 类似,只不过这题在取值的时候是有条件的。在不同集合间取值是不需要startIndex(开始位置)的。

class Solution {
public:vector<string> path;vector<vector<string>> ans;bool isEffective(vector<string> path, int depth,int index){if(depth==0)    return true;//检查同一列是否有皇后for(int i=0;i<path.size();i++){if(path[i][index]=='Q') return false;}//检查左上方是否有皇后int d=depth-1,j=index-1;while(d>=0 && j>=0 && j<path[0].size()){if(path[d][j]=='Q') return false;d--;j--;}//检查右上方是否有皇后d=depth-1;j=index+1;while(d>=0 && j>=0 && j<path[0].size()){if(path[d][j]=='Q') return false;d--;j++;}return true;}void backtracking(int n,int depth){//当确立了n个皇后,收集结果if(path.size()==n){ans.push_back(path);return;}for(int i=0;i<n;i++){//检查当前索引是否可行if(!isEffective(path,depth,i))  continue;//回溯string temp(n,'.');temp[i]='Q';path.push_back(temp);backtracking(n,depth+1);path.pop_back();}}vector<vector<string>> solveNQueens(int n) {backtracking(n,0);return ans;}
};

37. 解数独

还是需要用回溯,用两层for循环来确定位置。然后在该位置处遍历1-9,判断合适的数字。遇到合适的数字后就将其写入board中,然后利用递归再对下一个空白处进行值的确定。

class Solution {
public://判断值是否合适bool isOK(vector<vector<char>>& board,char c,int row,int list){for(int i=0;i<board.size();i++){//检查行if(board[row][i]==c) return false;//检查列if(board[i][list]==c)   return false;}//检查九宫格for(int i=(row/3)*3;i<(row/3)*3+3;i++){for(int j=(list/3)*3;j<(list/3)*3+3;j++){if(board[i][j]==c)  return false;}}return true;}bool backtracking(vector<vector<char>>& board){for(int i=0;i<board.size();i++){for(int j=0;j<board.size();j++){//判断该位置是否为空if(board[i][j]=='.'){//遍历1-9,寻找符合条件的数字for(char c='1';c<='9';c++){if(isOK(board,c,i,j)){board[i][j]=c;//递归下一层,确定下一个空白处的值bool b=backtracking(board);//如果返回true,说明board中所有的值都已经被确定了if(b)   return true;board[i][j]='.';}}return false;}}}return true;}void solveSudoku(vector<vector<char>>& board) {backtracking(board);}
};

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

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

相关文章

laravel8 安装swoole扩展

,1&#xff0c;确保你的开发环境满足要求&#xff0c;包括 PHP 版本和相关的扩展。Swoole 扩展要求 PHP 版本为 7.2 或更高&#xff0c;并且需要安装 Swoole 扩展本身。 ,2&#xff0c;打开终端或命令行窗口&#xff0c;并导航到你的 Laravel 项目目录。 ,3&#xff0c;使用 …

✺ch3——数学基础

目录 3D坐标系和点矩阵单位矩阵转置矩阵逆矩阵逆转置矩阵矩阵的运算矩阵加法()矩阵乘法() 常用的变换矩阵平移矩阵缩放矩阵旋转矩阵透视矩阵正射投影矩阵LookAt矩阵 向量加法和减法点积叉积 局部空间和世界空间——模型矩阵M视觉空间和合成相机——模型-视图矩阵MV用GLSL函数构…

MySQL的explain解读记录

简介 Explain是Mysql自带的sql执行的性能分析器。通过 explain 命令获取 select 语句的执行计划。模拟优化器执行SQL语句&#xff0c;从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是结构的性能瓶颈。 Explain可以分析出表的读取顺序、数据读取操作的操作类型、…

域名接入CloudFlare

接入Cloudflare分为两步 Cloudflare中注册站点域名DNS修改 整个过程如下 1.) 访问Cloudflare面板&#xff0c;添加站点 2.) 选择免费版 3.) 查看并明确DNS记录&#xff0c;其中服务的解析地址填写自己实际的服务器ip 4.) 去域名管理控制台&#xff0c;移除旧DNS服务器&#…

YOLOv5改进 | 2023 | CARAFE提高精度的上采样方法(助力细节长点)

一、本文介绍 本文给大家带来的CARAFE&#xff08;Content-Aware ReAssembly of FEatures&#xff09;是一种用于增强卷积神经网络特征图的上采样方法。其主要旨在改进传统的上采样方法&#xff08;就是我们的Upsample&#xff09;的性能。CARAFE的核心思想是&#xff1a;使用…

轻量封装WebGPU渲染系统示例<52>- Json数据描述材质、纹理等3D渲染场景信息

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/DataDrivenScene3.ts 当前示例运行效果: ​​​​​​​ Json数据: {"renderer": {"mtplEnabled": true,"camera": {"eye&quo…

16、vue3(十六):数据大屏(一):尺寸适配,水球图,柱形图,饼状图、图例

目录 一、尺寸适配解决方案 1.vw和vh 2.scale 二、数据大屏顶部搭建 1.思路分析

lightdb mysql模式下的datediff

文章目录 背景MySQL行为LightDB MySQL兼容模式行为DATEDIFF 背景 在信创适配中&#xff0c;有从MySQL迁移过来的程序&#xff0c;其中程序涉及日期加减数字的场景和使用datediff函数的场景。因此在LightDB-X 23.4版本中&#xff0c;MySQL兼容模式下对日期加减数字做了支持&…

[原创][R语言]股票分析实战[2]:周级别涨幅趋势的相关性

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…

频谱论文:面向频谱地图构建的频谱态势生成技术研究

#频谱# [1]李竟铭.面向频谱地图构建的频谱态势生成技术研究.2019.南京航空航天大学,MA thesis.doi:10.27239/d.cnki.gnhhu.2019.000556. &#xff08;南京航空航天大学&#xff09; 频谱地图是对无线电环境的抽象表达&#xff0c;它可以直观、多维度地展现频谱态势信息&…

RabbitMq交换机详解

目录 1.交换机类型2.Fanout交换机2.1.声明队列和交换机2.2.消息发送2.3.消息接收2.4.总结 3.Direct交换机3.1.声明队列和交换机3.2.消息接收3.3.消息发送3.4.总结 4.Topic交换机4.1.说明4.2.消息发送4.3.消息接收4.4.总结 5.Headers交换机5.1.说明5.2.消息发送5.3.消息接收5.4.…

React 实现列表页和列表详情页功能

1.简介 本篇文章将会基于react 实现列表页和列表详情的功能&#xff0c;后续会完善更多的功能细节。 2.实现 a.app.js 入口类&#xff0c;实现路由功能 import ./App.css; import {BrowserRouter, Route, Routes} from react-router-dom; import {UserList} from "./p…

python渗透测试入门——流量嗅探器

1.代码及代码讲解。 代码编写工具&#xff1a;VsCode &#xff08;1&#xff09;socket嗅探器 首先第一个脚本是最简单的原始socket嗅探器&#xff0c;它只会读一个数据包&#xff0c;然后直接退出&#xff1a; import socket import os#host to listen on HOST #这里输入…

Redis Cluster集群搭建 三主三从

Redis包下载 Linux&#xff1a; http://download.redis.io/releases/ Mac or Windows: https://redis.io/download/ 2.下载后解压进入文件夹&#xff08;本次我的Redis版本是6.2.14版本&#xff09; /redis/redis-6.2.14 开始安装 make instarll修改配置文件复制redis.conf 6…

Mysql适用Sql语句对数据库表的字段进行增加、删除和修改等一系列操作

对表字段进行增加&#xff1a;需要指定操作的表名&#xff0c;新增字段的字段名以及字段数据类型。 alter table TableName add column FieldName FieldType 对表字段进行删除&#xff1a;需要指定操作的表名&#xff0c;想要删除的字段名。 alter table TableName drop FieldN…

STM32F103RCT6开发板M3单片机教程04--按键检测

原画图讲解 本教程使用是&#xff08;光明谷SUN_STM32mini开发板&#xff09; 首先了硬件连接原理&#xff0c;STM32F103RCT6开发板是mini最小系统板&#xff0c;板子在没并有按键。需要自行用面包板搭建。 硬件连接&#xff1a; PC10 -> KEY1 &#xff08;MCU内部上拉…

【PostgreSQL】从零开始:(十一)PostgreSQL-Dropdb命令删除数据库

dropdb命令删除数据库 命令 [postgrespostgre-sql bin]$ dropdb --help dropdb removes a PostgreSQL database.Usage:dropdb [OPTION]... DBNAMEOptions:-e, --echo show the commands being sent to the server-f, --force try to terminate …

mysql原理--InnoDB的表空间

1.概述 通过前边儿的内容大家知道&#xff0c; 表空间 是一个抽象的概念。 对于系统表空间来说&#xff0c;对应着文件系统中一个或多个实际文件&#xff1b;对于每个独立表空间来说&#xff0c;对应着文件系统中一个名为 表名.ibd 的实际文件。可以把表空间想象成被切分为许许…

C#基础知识 - 操作数与运算符篇2

C#基础知识 - 操作数与运算符篇 4.2 运算符4.2.1 按操作数个数分类4.2.2 按运算类型分类4.2.3 对运算符 、-- 的使用4.2.4 关系运算符&#xff1a;>、 < 、> 、<、 ! 、4.2.5 逻辑运算符&#xff1a;&& || ! ^ & |4.2.6 位运算符&#xff1a;~ 、^、 &…

neuq-acm预备队训练week 10周报

neuq-acm预备队训练week 10 P1525 [NOIP2010 提高组] 关押罪犯-CSDN博客 neuq-acm预备队训练week 10 P3386 【模板】二分图最大匹配-CSDN博客 neuq-acm预备队训练week 10 P1129 [ZJOI2007] 矩阵游戏-CSDN博客