算法训练Day26 | 332.重新安排行程 ● 51. N皇后 ● 37. 解数独

332.重新安排行程

class Solution {
public:vector<string> result;bool backtracking(vector<vector<string>>& tickets, vector<bool>& used){if(result.size()==tickets.size()+1){return true;}for(int i=0; i<tickets.size(); i++){if(used[i] == true){continue;}if(tickets[i][0]==result.back()){result.push_back(tickets[i][1]);used[i] = true;if(backtracking(tickets, used)) return true;result.pop_back();used[i] = false;}}return false;}vector<string> findItinerary(vector<vector<string>>& tickets) {result.push_back("JFK");vector<bool> used(tickets.size(), false);backtracking(tickets, used);return result;}
};

参考文章:代码随想录-332.重新安排行程

51. N皇后


class Solution {
public:vector<vector<string>> result;bool isValid(int col, int row, vector<string>& temp, int n){for(int i=0; i<row; i++){if(temp[i][col]=='Q') return false;}for(int i=row-1, j=col-1; i>=0&&j>=0; i--, j--){if(temp[i][j]=='Q') return false;}for(int i=row-1, j=col+1; i>=0&&j<n; i--, j++){if(temp[i][j]=='Q') return false;}return true;}void backtracking(int n, int row, vector<string>& temp){if(row == n){result.push_back(temp);return;}for(int i=0; i<n; i++){if(isValid(i, row, temp, n)){temp[row][i] = 'Q';backtracking(n, row+1, temp);temp[row][i] = '.';}}}vector<vector<string>> solveNQueens(int n) {result.clear();vector<string> temp(n, string(n, '.'));backtracking(n,0, temp);return result;}
};

参考文章:代码随想录- 51. N皇后

37. 解数独

class Solution {
public:bool isValid(int row, int col, char val, vector<vector<char>>& board){for(int i=0; i<board.size(); i++){if(board[i][col]==val){return false;}}for(int j=0; j<board.size(); j++){if(board[row][j]==val){return false;}}int row_s = (row/3)*3;int col_s = (col/3)*3;for(int i = row_s; i<row_s+3; i++){for(int j=col_s; j<col_s+3; j++){if(board[i][j]==val){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] == '.'){for(char val='1'; val<='9'; val++){if(isValid(i,j,val, board)){board[i][j]=val;if(backtracking(board)) return true;board[i][j]='.';}}return false;}}}return true;}void solveSudoku(vector<vector<char>>& board) {backtracking(board);}
};

参考文章:代码随想录- 37. 解数独

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

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

相关文章

重生之我要精通JAVA--第四周笔记

文章目录 接口接口的定义与使用接口中成员的特点接口和类之间的关系 JDK9新增的方法适配器设计模式 内部类什么是内部类&#xff1f;内部类的访问特点分类成员内部类获取成员内部类对象 静态内部类局部内部类匿名内部类格式细节使用场景 APIMathMath常用方法 SystemRuntimeObje…

ts 详细-学习

TS基础&#xff08;一&#xff09; 变量声明 ts的类型主要包括两种数据类型&#xff1a;原始数据类型和对象数据类型 原始数据类型和js的数据类型相似包括以下几种&#xff1a;布尔值&#xff0c;字符串&#xff0c;null,undefined以及Se6中的Symbol和BigInt的原址数据类型 …

VMware虚拟机故障:“显示指定的文件不是虚拟磁盘“,处理办法

一、故障现象 由于虚拟机宕机&#xff0c;强制重新启动虚拟机后显示错误&#xff0c;没有办法启动虚拟机。 虚拟机有快照&#xff0c;执行快照还原&#xff0c;结果也不行&#xff0c;反复操作&#xff0c;在虚拟机文件目录出现很多莫名文件 二、故障原因 根据故障提示&#…

数据结构(C):玩转链表

目录 &#x1f37a;0.前言 1.链表的概念 2.链表的分类 2.1带头不带头 2.2单向和双向 2.3循环和不循环 2.4主要使用的链表 3.链表的实现 3.1申请一个链表 3.2头插和尾插 3.2.1函数的形参问题 3.2.2二级指针问题解决 3.3头删和尾删 3.4打印链表 3.5查找 3.5销…

MySQL视图:数据库中的虚拟表与数据透视窗

前言 在数据库管理系统的世界里&#xff0c;MySQL视图扮演着一个独特而重要的角色&#xff0c;它如同数据库中的一扇窗&#xff0c;透过这扇窗&#xff0c;我们可以以不同的视角观察和操作数据&#xff0c;而无需直接触及底层表格的结构。本文将为您深入解析MySQL视图的定义、…

【谷粒商城】03创建商品模块

1.创建模块 2.创建项目微服务 商品服务、仓储服务、订单服务、优惠券服务、用户服务 共同&#xff1a; 1&#xff09;、web、openfeign 2&#xff09;、每一个服务&#xff0c;包名 com.atguigu.gulimall.xxx(product/order/ware/coupon/member) 3&#xff09;、模块名&#x…

​《MATLAB科研绘图与学术图表绘制从入门到精通》示例:绘制德国每日风能和太阳能产量3D线图

在MATLAB中&#xff0c;要绘制3D线图&#xff0c;可以使用 plot3 函数。 在《MATLAB科研绘图与学术图表绘制从入门到精通》书中通过绘制德国每日风能和太阳能产量3D线图解释了如何在MATLAB中绘制3D线图。 购书地址&#xff1a;https://item.jd.com/14102657.html

future wait_for()成员、shared_future

future wait_for()成员 wait_for()&#xff1a;等待其异步操作操作完成或者超出等待&#xff0c;用于检查异步操作的状态。wait_for()可以接受一个std::chrono::duration类型的参数&#xff0c;它表示等待的最大时间&#xff0c;会返回一个std::future_status枚举值&#xff0…

完美解决Windows10下-更换JDK环境变量后,在cmd下执行仍java -version然出现原来版本的JDK的问题

一、错误场景预演 本人欲将 JDK 1.8 通过安装包的方式升级为 JDK 22。 本地旧版本&#xff1a;1.8.0_221预升级版本&#xff1a;22.0.1 1.1、查看本地旧版本 在配置环境变量之前&#xff0c;首先我们要明确&#xff0c;本地存在旧版本&#xff0c;如果本地没有 Java&#x…

MFC通过继承现有控件自定义控件

在MFC 自定义控件&#xff0c;可以通过继承MFC提供的控件类&#xff08;如CButton、CEdit、CListBox等&#xff09;并重写其成员函数和消息处理函数来实现。 以下是一个基本的步骤指南&#xff0c;用于在MFC中创建自定义控件&#xff1a; 确定要继承的基类&#xff1a; 首先…

vm16安装最新版本的ubuntu虚拟机,并安装g++的步骤记录

背景 低版本的ubuntu安装G一直不成功&#xff0c;干脆安装最新版的 官网下载 bing搜索ubuntu 下载完成 vm16新建虚拟机 一直下一步&#xff0c;安装完成 终端输入命令 sudo apt-get update ᅟᅠ       sudo apt install gcc ᅟᅠ      sudo apt install g

树莓派点亮FPGA小灯

树莓派点亮FPGA小灯 引言&#xff1a; ​ 本次实验的目的是通过树莓派和FPGA之间的串口通信&#xff0c;控制FPGA开发板上的小灯。实验将展示如何使用树莓派发送特定的字符信号&#xff0c;通过串口传输至FPGA&#xff0c;并在FPGA上实现逻辑解析&#xff0c;以点亮指定的小灯。…

Vim常用快捷键

这个是我的草稿本记录一下防止丢失&#xff0c;以后有时间进行整理 0 或功能键[Home]这是数字『 0 』&#xff1a;移动到这一行的最前面字符处 (常用)$ 或功能键[End]移动到这一行的最后面字符处(常用)G移动到这个档案的最后一行(常用)nGn 为数字。移动到这个档案的第 n 行。例…

【QT】QT背景介绍

本专栏内容为&#xff1a;QT学习专栏 通过本专栏的深入学习&#xff0c;你可以了解并掌握QT。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;QT &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &#x1f339;&#x1f…

灰度图恢复(C++)

思路&#xff0c;数字出现的次数与要统计的行列向匹配&#xff0c;函数表达式为 sum row*mcol 1; 例如初始出现次数为255 2&#xff0c;即255出现2次&#xff0c;则{0&#xff0c;0}、{0&#xff0c;1}都为255 #include <iostream> #include <sstream> #include…

3D分子生成的定制扩散框架 MolDiff - 评测

MolDiff模型是一种考虑分子键生成的3D分子生成的新模型。MolDiff是清华大学智能产业研究院马剑竹课题组发表在PMLR 2023的工作&#xff0c;第一作者是Xingang Peng&#xff0c;文章题目为&#xff1a;《 Addressing the Atom-Bond Inconsistency Problem in 3D Molecule Genera…

Rust中的链式调用方法

在Rust编程语言中&#xff0c;链式调用是一种流行的编程模式&#xff0c;它允许开发者以流畅、连续的方式调用多个方法。这种风格不仅提高了代码的可读性&#xff0c;而且使得复杂的操作可以串联在一起&#xff0c;形成一个清晰、简洁的语句。在Rust中&#xff0c;链式调用主要…

【Android】Kotlin学习之数据容器 -- 集合

一. 定义 List : 是一个有序列表, 可通过下标访问元素. 元素可以在list中出现多次, 元素可重复 Set : 是元素唯一的集合, 一般来说Set中元素的顺序并不重要, 无序集合. Map : 是一组键值对, 键是唯一的, 每个键刚好映射到一个值, 值可以重复 二. 集合创建 三. 示例 mutabl…

OSTE-Web-Log-Analyzer:基于Python的Web服务器日志自动化分析工具

关于OSTE-Web-Log-Analyzer OSTE-Web-Log-Analyzer是一款功能强大的Web服务器日志自动化分析工具&#xff0c;该工具专为安全研究人员设计&#xff0c;能够使用Python Web日志分析工具&#xff08;Python Web Log Analyzer&#xff09;帮助广大研究人员以自动化的形式实现Web服…

推导 模型矩阵的逆转置矩阵求运动物体的法向量

一个物体表面的法向量如何随着物体的坐标变换而改变&#xff0c;取决于变换的类型。使用逆转置矩阵&#xff0c;可以安全地解决该问题&#xff0c;而无须陷入过度复杂的计算中。 法向量变化规律 平移变换不会改变法向量&#xff0c;因为平移不会改变物体的方向。 旋转变换会改…