初始回溯算法

回溯算法一般用于对数据枚举后选取符合条件的结果并最终返回结果集的问题,之所以叫回溯法,是因为它可进可退
要想理解回溯的本质,还是要通过具体的题目去学习。

路径问题

https://www.nowcoder.com/practice/b736e784e3e34731af99065031301bca?
tpId=13&tqId=11177&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

分析:
在这里插入图片描述
由图可以知道这里需要采取深度优先遍历(DFS)的方式先找到一个叶子节点。

 void _FindPath(TreeNode* root,int target,vector<vector<int>>& result,vector<int>& tmp){		//不要忘记引用//第五步,设置结束条件if(root==nullptr)return;//第一步,将当前节点值放入tmptmp.push_back(root->val);target-=root->val;if(root->left==root->right && target==0)//条件判断result.push_back(tmp);//第二步,访问左树(子问题)_FIndPath(root->right,target,result,tmp);//本条语句执行完,代表左树的所有路径均已检测完//第三步,访问右树(子问题)_FindPath(root->right,target,result,tmp);//本条语句执行完,代表右树的所有路径均已检测完//第四步,回退tmp.pop_back();}vector<vector<int> > FindPath(TreeNode* root, int target) {vector<vector<int>> result;if(root==nullptr)return result;vector<int> tmp;	//需要一个临时变量来存放检测中的路径_FindPath(root,target,result,tmp);return result;}

全排列问题

https://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7?
tpId=13&tqId=11180&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串 abc,acb,bac,bca,cab ,cba

分析:
在这里插入图片描述

bool IsExist(vector<string>& res,string& str,map<string,int>& Map){if(Map[str]==1){return true;}return false;}void _Permutation(vector<string>& res,string& str,int start,map<string,int>& Map){//结束条件if(start==str.length()-1){if(!IsExist(res,str,Map)){res.push_back(str);Map[str]=1;}return;}for(int i=start;i<str.length();++i){swap(str[start],str[i]);//让每一个元素都当一次首_Permutation(res,str,start+1,Map);//子问题:求首元素之后元素的排列组合swap(str[start],str[i]);//回退}vector<string> Permutation(string str) {vector<string> res;if(str==""){res.push_back(str);}map<string,int> Map;//需要一张映射表来方便后续去重_Permutation(res,str,0,Map);return res;}

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

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

相关文章

GZ036 区块链技术应用赛项赛题第9套

2023年全国职业院校技能大赛 高职组 “区块链技术应用” 赛项赛卷&#xff08;9卷&#xff09; 任 务 书 参赛队编号&#xff1a; 背景描述 随着异地务工人员的增多&#xff0c;房屋租赁成为一个广阔是市场&#xff1b;目前&#xff0c;现有技术中的房屋租赁是由…

Git 客户端可视化工具tortoisegit

Git 使用教程 git一点通 (kdocs.cn) 二、Git 客户端可视化工具-推荐 1.常用工具 tortoisegit 官网 https://tortoisegit.org/ 推荐 sourcetree 官网 https://www.sourcetreeapp.com/ 2.tortoisegit安装 2.1 下载安装包 2.2 下载语言包 2.3 安装 2.4 安装语言包 5.使用 5.1 新建…

strongswan教程

在 CentOS 7 上使用 StrongSwan 5.7.2 建立 IPSec VPN 连接&#xff0c;可以按照以下步骤进行配置&#xff1a; 准备3台服务器&#xff1a; A:192.168.3.209&#xff0c;私网172.18.1.0/24 B:192.168.3.29&#xff0c;私网172.18.2.0/24 C:192.168.3.154&#xff0c;私网10…

LeetCode--代码详解 104. 二叉树的最大深度

104. 二叉树的最大深度 题目 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例 2&#xff1a; 输入&…

体验一下UE5.3的Skeletal Editor

UE5.3中增加了蒙皮网格骨架编辑工具&#xff0c;用户无需导出Fbx就可以直接编辑蒙皮网格&#xff0c;支持修改绑定姿势的骨骼位置、修改蒙皮权重、对已蒙皮多边形进行编辑以及对蒙皮网格减免等操作&#xff0c;就来体验一下。 1.加载插件 要使用Skeletal Editor功能&#xff…

量化巨头“卖空”被刷屏!网友:又一类量化策略要“收摊”了

量化圈遇到了龙年首宗“大事件”&#xff01; 2月20日晚间&#xff0c;沪深交易所同时出手对量化巨头灵均投资的异常交易行为进行“处理”。 沪深交易所均称发现灵均在2月19日开盘1分钟内&#xff0c;名下多个账户通过计算机程序自动生产交易指令&#xff0c;短时间大量下单卖…

解锁文档处理新境界:ONLYOFFICE编辑功能为开发者带来新机遇

引言 ONLYOFFICE最新发布的文档8.0版本带来了一系列引人注目的功能和优化&#xff0c;为用户提供了更强大、更高效的在线编辑体验。这次更新涵盖了多个方面&#xff0c;包括PDF表单、RTL支持、单变量求解、图表向导以及插件界面设计更新等。这些新功能不仅提升了文档处理的便利…

Android挖取原图中心区域RectF(并框线标记)放大到ImageView宽高,Kotlin

Android挖取原图中心区域RectF(并框线标记)放大到ImageView宽高&#xff0c;Kotlin 红色线框区域即为选中的原图中心区域&#xff0c;放大后放到等宽高的ImageView里面。 import android.content.Context import android.graphics.Bitmap import android.graphics.BitmapFactor…

HarmonyOS Stage模型基本概念讲解

本文 我们来说harmonyos中的一种应用模型 Stage模型 官方提供了两种模型 一种是早期的 FA模型 另一种就是就是 harmonyos 3.1才开始的新增的一种模型 Stage模型 目前来讲 Stage 会成为现在乃至将来 长期推进的一种模型 也就是 无论是 现在的harmonyos 4.0 乃至 之后要发布的 …

机器人内部传感器阅读笔记及心得-位置传感器-光电编码器

目前&#xff0c;机器人系统中应用的位置传感器一般为光电编码器。光电编码器是一种应用广泛的位置传感器&#xff0c;其分辨率完全能满足机器人的技术要求&#xff0c;这种非接触型位置传感器可分为绝对型光电编码器和相对型光电编码器。前者只要将电源加到用这种传感器的机电…

【触想智能】国产工控机五大分类你知道吗?

工控机是专门为工业控制设计&#xff0c;用于对生产过程中使用的机器设备、生产流程、数据参数等进行监测与控制的计算机。由于工控机经常会在恶劣的环境下运行&#xff0c;对数据的安全性要求也比较高&#xff0c;因此需要单独定制才能满足需求。 在现代化工业生产过程中&…

信息安全法律法规体系

信息安全法律法规体系 我国信息安全法规体系可以分为4层。 法律层面具体对应的法律、法规一般性法律规定宪法、国家安全法、国家秘密法、治安管理处理条例等虽然没有专门针对信息安全的条款,但约束了信息安全相关的行为规范和惩罚信息网络犯罪的法律《中华人名共和国刑法》《…