建设银行手机银行网站用户名是什么意思网站建设与管理试题及答案

张小明 2025/12/26 8:25:14
建设银行手机银行网站用户名是什么意思,网站建设与管理试题及答案,北京app软件开发,揭阳关键词网站排名回溯算法#xff1a;从探索到回溯的艺术 算法概述 回溯算法是⼀种经典的递归算法#xff0c;通常用于解决组合问题、排列问题和搜索问题等。 回溯算法的基本思想#xff1a;从⼀个初始状态开始#xff0c;按照⼀定的规则向前搜索#xff0c;当搜索到某个状态无法前进时从探索到回溯的艺术算法概述回溯算法是⼀种经典的递归算法通常用于解决组合问题、排列问题和搜索问题等。回溯算法的基本思想从⼀个初始状态开始按照⼀定的规则向前搜索当搜索到某个状态无法前进时回退到前⼀个状态再按照其他的规则搜索。回溯算法在搜索过程中维护⼀个状态树通过遍历状态树来实现对所有可能解的搜索。回溯算法的流程“试错”即在搜索过程中不断地做出选择如果选择正确则继续向前搜索否则回退到上⼀个状态重新做出选择。回溯算法通常⽤于解决具有多个解且每个解都需要搜索才能找到的问题选择做出一个选择约束检查当前选择是否满足条件回溯如果当前路径无效撤销选择尝试其他选项回溯算法的核心思想是搜索状态树通过遍历状态树来实现对所有可能解的搜索算法框架以下是回溯算法的通用模板voidbacktrack(vectorintpath,vectorintchoice,...){// 满⾜结束条件if(/* 满⾜结束条件 */){// 将路径添加到结果集中res.push_back(path);return;}// 遍历所有选择for(inti0;ichoices.size();i){// 做出选择path.push_back(choices[i]);// 做出当前选择后继续搜索backtrack(path,choices);// 撤销选择}}其中path表示当前已经做出的选择choices表示当前可以做的选择。在回溯算法中我们需要做出选择然后递归地调用回溯函数。如果满足结束条件则将当前路径添加到结果集中否则我们需要撤销选择回到上⼀个状态然后继续搜索其他的选择。回溯算法的时间复杂度通常较高因为它需要遍历所有可能的解。但是回溯算法的空间复杂度较低因为它只需要维护⼀个状态树。在实际应用中回溯算法通常需要通过剪枝记忆搜索方法进行优化以减少搜索的次数从而提高算法的效率。递归与回溯如果上面比较文绉绉的介绍看的一知半解那如果从回溯算法的本质就是递归这个视角看对待问题呢回溯算法天然适合用递归来实现因为递归的调用栈自动保存了状态递归的返回机制天然实现了回溯也就是回退到上⼀个状态也叫恢复现场所以只要在基础递归方法上加入“恢复现场”的机制就可以把这个递归当作回溯算法初探回溯题目验证二叉搜索树思路利用二叉搜索树的中序遍历的结果是一个有序的序列这一特性检验使用一个全局的变量访问一个节点时与这个全局变量比较符合要求则更新这个变量继续遍历。使用一个全局变量作为前一节点的值来进行验证的这一操作就可以粗略理解为一种恢复现场代码实现classSolution{longprevLONG_MIN;//-1int hold不住public:boolisValidBST(TreeNode*root){if(rootnullptr)returntrue;//一旦出错直接返回剪枝if(!isValidBST(root-left))returnfalse;if(root-valprev)returnfalse;prevroot-val;returnisValidBST(root-right);}};其中只要发现有一处节点不符合二叉搜索树即可返回结果剩余的树也不需要再遍历了这个操作也就是所谓的剪枝题目二叉树的所有路径思路使用深度优先遍历DFS求解。使用全局变量将路径以字符串形式存储从根节点开始遍历每次遍历时将当前节点的值加⼊到路径中如果该节点为叶子节点将路径存储到结果中。否则将 “-” 加入到路径中并递归遍历该节点的左右子树。在每一层中当前路径是不一样的而当遍历完左子树返回到上一层时是需要将路径恢复的但是路径我们通过了递归函数的参数来维护而递归的返回机制天然实现了回溯不需要手动执行这便是回溯代码实现classSolution{vectorstringret;string sep-;public:vectorstringbinaryTreePaths(TreeNode*root){string path;dfs(root,path);returnret;}voiddfs(TreeNode*root,string path){pathto_string(root-val);//递归出口if(root-leftnullptrroot-rightnullptr){ret.emplace_back(path);return;}pathsep;//添加到路径//遍历if(root-left)dfs(root-left,path);if(root-right)dfs(root-right,path);}};以上两题和平常写的递归没有什么区别但是都含有回溯的影子不需要我们手动去恢复现场。在使用回溯算法的题型中只需要再基础递归中加上恢复现场的操作那么这就是一个回溯算法回溯算法的应用场景组合问题从n个元素中选k个的所有组合排列问题求序列的所有排列子集问题求集合的所有子集棋盘问题N皇后、数独、八皇后等分割问题分割回文串、IP地址划分路径问题在矩阵中寻找特定路径回溯例题题目全排列思路对于穷举这种题型推荐画决策树这样不容易数漏而且后续的回溯写起来很清晰。用每一个数与所有数进行排列组合需要注意的有两点一对于每一层递归上一层使用过的元素这一层就不能使用了所以需要进行剪枝借助一个全局的bool check数组进行判断元素是否使用过也就是所谓的记忆化搜索优化二每种排列组合使用全局的path进行记录当返回一层递归时需要手动进行回溯check数组同样需要在返回时手动回溯代码实现classSolution{vectorvectorintret;//存储结果vectorintpath;//记录组合boolcheck[7];//记忆搜索public:vectorvectorintpermute(vectorintnums){dfs(nums);returnret;}voiddfs(vectorintnums){//出口if(path.size()nums.size()){ret.push_back(path);return;}//探索组合for(inti0;inums.size();i){//检测是否已使用if(!check[i])//剪枝{check[i]true;path.push_back(nums[i]);dfs(nums);//重复子问题//回溯check[i]false;path.pop_back();}}}};题目子集思路画决策树这里提供两种决策树的画法一对于每个元素有两种选择1. 不进行任何操作2. 将其添加至当前状态的集合。在递归时我们需要保证递归结束时当前的状态与进行递归操作前的状态不变而当我们在选择进行步骤 2 进行递归时当前状态会发生变化因此我们需要在递归结束时撤回添加操作即进行回溯。而且从决策树发现这里枚举的所有结果都是需要的也就不需要进行剪枝操作了。代码实现classSolution{vectorvectorintret;vectorintpath;public:vectorvectorintsubsets(vectorintnums){dfs(nums,0);returnret;}voiddfs(vectorintnums,intpos){if(posnums.size()){ret.push_back(path);return;}// 选path.push_back(nums[pos]);dfs(nums,pos1);path.pop_back();// 恢复现场// 不选dfs(nums,pos1);}};二将当前元素与后续元素进行组合这样画出的决策树可以发现每次组合出来的树就是子集直接保存即可同样的这里枚举的所有结果都是需要的无需进行剪枝操作。代码实现classSolution{vectorvectorintret;//存放结果vectorintpath;//存放路径public:vectorvectorintsubsets(vectorintnums){ret.push_back(path);//处理空集dfs(nums,0);returnret;}voiddfs(vectorintnums,intpos){for(intipos;inums.size();i){path.push_back(nums[i]);//存放结果ret.push_back(path);//求子集dfs(nums,i1);//每一层直接得出当前的子集path.pop_back();//回溯}}};对于需要穷举所有可能的结果时建议画决策树虽说回溯算法有所谓的模板但是通过上述两题可发现当你的决策树画出来时所需要的全局变量也就出来了是否需要进行剪枝也知道了什么时候需要回溯也知道了所以强烈建议画决策树总结回溯算法是一种强大而灵活的算法特别适合解决需要尝试所有可能性的问题。虽然它的时间复杂度可能较高但通过合理的剪枝和优化可以显著提高效率。掌握回溯算法需要理解其核心的选择-约束-回溯模式并通过大量练习来培养解决问题的直觉。关键要点回溯是暴力搜索的优化版本剪枝是提高效率的关键递归实现是最自然的方式理解问题约束是设计回溯算法的第一步
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

cms做企业网站6动漫做美食的视频网站

demo5 第五关网上找了很多,但是发现关于这一个版本的demo去除教程是一点没有,而且我也找不到原始的demo无法做到IO重定向。所以我也就直接通过jadx分析软件的java代码查找签名校验函数逻辑,然后通过NP管理器打开dex文件修改对应的smail代码&a…

张小明 2025/12/26 8:25:13 网站建设

韩雪冬网站设计莆田网站建设

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…

张小明 2025/12/26 8:24:40 网站建设

湘潭网站推广动态效果的网站建设技术

深入解析Linux与Windows环境下的SSH应用 1. 服务配置基础 在Linux与Windows集成环境中,服务配置是基础且关键的环节。例如telnet和ftp服务,其配置如下: telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd ftp stream…

张小明 2025/12/26 8:24:07 网站建设

影盟自助网站建设淘宝运营培训多少钱

LangFlow 与 CI/CD 流水线集成的可能性分析 在 AI 应用开发日益普及的今天,一个明显的矛盾正在浮现:大语言模型(LLM)的能力越来越强大,但将其稳定、可复用地部署到生产环境中的门槛却依然很高。LangChain 等框架虽然极…

张小明 2025/12/26 8:23:34 网站建设

建设网站收集加工素材教案企业做网站公司排名口碑

想要将普通照片转化为精确的三维模型吗?三维重建技术正是实现这一目标的核心方法,而运动恢复结构与多视图立体则是其中的关键技术。COLMAP作为开源领域最强大的三维重建工具,集成了完整的重建流程,让每个人都能轻松进入三维视觉的…

张小明 2025/12/26 8:23:00 网站建设

嘉兴论坛网站建设网站建设的工具

【摘要】AI正通过重塑成本结构,而非简单替代任务,从根本上瓦解法律行业的传统定价模式。价值核心正从“计时劳动”转向“策略判断与责任承担”,一场深刻的范式转移已经开始。引言在伦敦苏荷区一间光线昏暗的私人会所里,一位资深大…

张小明 2025/12/26 8:22:26 网站建设