网站建设维护费合同范本2020ppt模板免费下载

news/2025/9/28 15:38:31/文章来源:
网站建设维护费合同范本,2020ppt模板免费下载,空白word个人简历模板下载,北京做网站建设公司哪家好青铜挑战-回溯是怎么回事 回溯#xff0c;最重要的算法之一 主要解决一些暴力枚举也搞不定的问题#xff0c;例如组合、分割、子集、排列、棋盘等 从性能角度来看回溯算法的效率并不高#xff0c;但对于这些暴力都搞不定的算法能出结果就很好了#xff0c;效率低点没关系…青铜挑战-回溯是怎么回事 回溯最重要的算法之一 主要解决一些暴力枚举也搞不定的问题例如组合、分割、子集、排列、棋盘等 从性能角度来看回溯算法的效率并不高但对于这些暴力都搞不定的算法能出结果就很好了效率低点没关系 回溯可视为递归的拓展很多思想和解法都与递归密切相关对比递归来分析其特征会理解的更深刻 举例说明递归和回溯的区别 设想一个场景某猛男想脱单两种策略 递归策略先与意中人制造偶遇然后了解人家的情况然后约人家吃饭有好感之后尝试拉人家的手没有拒绝就表白回溯策略先统计周围所有单身女孩然后一个一个表白被拒绝就说”我喝醉了“然后就当啥也没有发生继续下一个 回溯最大的好处有非常明确的模板 所有的回溯都是一个大框架因此透彻理解回溯的框架是解决一切回溯问题的基础 回溯不是万能的解决的问题也是非常明确的例如组合、分割、子集、排列、棋盘等 不过这些问题具体处理时又有很多不同 回溯可视为递归的拓展代码结构特别像深度遍历N叉树 难点回溯在递归语句之后有个”撤销“的操作。 好比谈了个新女朋友来你家之前要将前任的东西赶紧藏起来。回溯也一样有些信息是前任的要处理掉才能重新开始。 回溯的模板如下 void backtracking(参数){if(终止条件){存放结果;return;}for(选择本层集合中元素(画成树就是树节点孩子的大小)){处理节点;backtracking(参数);回溯撤销处理结果} }1. 从N叉树说起 二叉树的前序遍历 class TreeNode:def __init__(self, val):self.val valself.left Noneself.right Nonedef tree_dfs(root):if root is None:returnprint(root.val)tree_dfs(root.left)tree_dfs(root.right)N叉树的前序遍历 class TreeNode:def __init__(self, val):self.val valself.children []def tree_dfs(root):# 递归终止条件if root is None:return# 节点处理print(root.val)# 通过循环分别遍历N个子树for i in root.children:tree_dfs(i)回溯模板与N叉树的遍历模板非常像 2. 为什么有的问题暴力枚举也不行 什么问题暴力枚举也不行 举个例子 LeetCode77 组合 https://leetcode.cn/problems/combinations/ 给定两个整数 n 和 k返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 n4, k2时双层暴力枚举 def violent_enumeration():res []for i in range(1, 5):for j in range(i 1, 5):res.append((i, j))return resif __name__ __main__:print(violent_enumeration()) # [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]n10, k3时三层暴力枚举 def violent_enumeration():res []for i in range(1, 11):for j in range(i 1, 11):for k in range(j 1, 11):res.append((i, j, k))return resk未知时循环次数未知这时暴力枚举就失效了 这就是组合类型问题除此之外子集、排列、切割、棋盘等方面都有类似的问题我们需要找到更好的方式 3. 回溯递归局部枚举手动撤销放下前任 继续研究 LeetCode77 组合 https://leetcode.cn/problems/combinations/ 给定两个整数 n 和 k返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 n4, k2时 n5, k3时 从图中我们可以发现元素个数n相当于树的宽度(横向)每个结果的元素个数k相当于树的深度(纵向) 此外还有一下规律 局部枚举每次都是从类似 [1,2,3,4] 这样的序列进行枚举越往后枚举范围越小递归再看n5,k3时图中红色大框部分执行过程与n4,k2处理过程一直时可以递归的子结构手动撤销观察图中可以看到取3得到[1,2,3]之后需要将3撤掉再继续取4得到[1,2,4] 对应的代码操作:将第一个结果放到 path中path[1]将第二个结果放到 path中path[1,2]将第三个结果放到 path中path[1,2,3]将结果输出撤销3, path[1,2]继续枚举将第三个结果放到 path中path[1,2,4]… 综上可以得到 回溯递归枚举手动撤销 这就是回溯的基本规律掌握之后就可写出完整的回溯代码了 回溯代码实现 import copyclass Solution:def combine(self, n: int, k: int) - List[List[int]]:def dfs(k, n, begin, path, res):# 递归终止条件是path的长度等于kif len(path) k:res.append(copy.deepcopy(path))return# 枚举针对一个节点遍历可能的搜索起点for i in range(begin, n1):# 像路径变量里添加一个数就是树枝的值path.append(i)# 搜索起点加1缩小范围为下一轮递归做准备因为不允许出现重复的元素dfs(k, n, i 1, path, res)# 手动撤销path.pop()res []if k 0 or n k:return respath []begin 1dfs(k, n, begin, path, res)return res4. 图解为什么有个撤销的操作 暂无理解了上一小节的 手动撤销 即可 5. 回溯热身-再论二叉树的路径问题 5.1 输出二叉树的所有路径 LeetCode 257 https://leetcode.cn/problems/binary-tree-paths/ 思路分析 方法1深度优先搜索 深度优先搜索就是从根节点开始一直找到叶子结点这里可以先判断当前节点是不是叶子结点再决定是不是向下走如果是叶子结点我们就增加一条路径。这个之前学习这里不再赘述 方法2回溯 从回溯的角度分析得到第一条路径ABD之后怎么找到第二条路径ABE这里就是先将D撤销然后再继续递归就可以了 难点手动撤销 代码实现 方法1 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def binaryTreePaths(self, root: Optional[TreeNode]) - List[str]:def search_path(node, path):if not node:return path str(node.val)if not node.left and not node.right:paths.append(path)else:path -search_path(node.left, path)search_path(node.right, path)paths []if root:search_path(root, path)return paths 方法2回溯 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def binaryTreePaths(self, root: Optional[TreeNode]) - List[str]:def search_path(node, path, paths):if node is None:returnpath.append(str(node.val))if node.left is None and node.right is None:paths.append(-.join(path))for i in [node.left, node.right]:search_path(i, path, paths)path.pop() # 返回上一层递归时要让当前路径恢复原样paths []path []if root:search_path(root, path, paths)return paths5.2 路径总和问题 LeetCode 113 路径总和 II https://leetcode.cn/problems/path-sum-ii/ 思路分析 目标路径总和 targetSum22 根节点5需要左侧或右侧target_sum22-517继续看左子树node(4)需要node(4)左子树或右子树满足 target_sum17-413依次类推 … … 代码实现 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right import copyclass Solution:def pathSum(self, root: Optional[TreeNode], targetSum: int) - List[List[int]]:def find(node, target_sum, path, paths):if node is None:returnpath.append(node.val)if node.left is None and node.right is None and node.val target_sum:paths.append(copy.deepcopy(path))target_sum - node.valfor i in [node.left, node.right]:find(i, target_sum, path, paths)path.pop()paths []path []if root:find(root, targetSum, path, paths)return paths 注不想用copy也可以用 path[:] 替代

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

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

相关文章

capsWriter-offline可否支持更小声音输入调研-opus4.1答复

我来帮您分析这个项目以及关于支持耳语输入的可行性。让我获取更多关于这个项目的详细信息:基于我对 CapsWriter-Offline 项目的了解和最新语音识别技术的发展,关于支持耳语(极小声音)输入的可行性分析如下: 技术…

线上教学网站wordpress 外观

转载于:https://www.cnblogs.com/yver/p/6054131.html

Java 旋转 PDF 页面:启用 Spire.PDF 实现高效页面处理

Java 旋转 PDF 页面:启用 Spire.PDF 实现高效页面处理2025-09-28 15:26 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; d…

wordpress 调用指定id文章seo公司是干嘛的

【考证须知】IT行业高含金量的证书(传送门)💖 【软件设计师笔记】计算机系统基础知识考点(传送门)💖 【软件设计师笔记】操作系统考点(传送门)💖 🐓 编程语言之间的翻译形式 汇编 高级程序不能直接在计算机上执行,…

一些树上问题

不要吐槽我不填坑了。(半恼) 不要吐槽我为什么开这么多坑。(全恼)

当当网电子商务网站建设特点有什么推荐的网站

break、continue、return的区别 break:表示中断,可以在switch case中或循环中 使用 当遇到break 则结束当前整个switch case 或 循环 continue:表示继续,只能在循环中使用,当遇到continue时,则结束本次&…

成都搜索优化整站优化知乎,闲鱼网站建设和网站运营

一、引言 记录 Ubuntu 配置的第一个代码过程 二、更改conda虚拟环境的默认安装路径 鉴于不久前由于磁盘空间不足引发的重装系统的惨痛经历,在新系统装好后当然要先更改虚拟环境的默认安装路径。 输入指令: conda info可能因为我原本就没有把 Anacod…

【AI论文】潜在区域划分网络:生成建模、表征学习与分类的统一原理 - 实践

【AI论文】潜在区域划分网络:生成建模、表征学习与分类的统一原理 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family…

自己做流媒体网站难青岛注册公司多少钱

数据库相关操作:显示数据库:show databases;如果是0.00秒并不代表没有花费时间,而是时间非常短,小于0.01秒。创建数据库:Query OK表示创建成功,1行受到影响,处理时间为0、05秒。使用下面的命令查…

网络工程 --- 一个嵌入式网络设备中存在哪些开源软件

网络工程 --- 一个嵌入式网络设备中存在哪些开源软件BusyBoxLinux (内核)zlib (版本 1.2.11)Dropbear SSH (版本 2017.75)jQuery JavaScript Library (版本 1.11.1)OpenSSL (版本 1.0.2k)redis (版本 3.0.7)libyang (版…

如何用 ShedLock 让 Spring Boot 的定时任务在多实例环境下只执行一次

之前在Spring Boot教程中我们介绍了如何用 @Scheduled 注解来创建定时任务,Spring 的任务调度用起来确实顺手。可这种实现方式一上多实例(比如多副本部署),同一个定时任务会在每个节点都跑一遍,等于任务会重复执行…

故障处理:Oracle表空间异常增长后又恢复正常的故障模拟与分析

我们的文章会在微信公众号IT民工的龙马人生和博客网站 ( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。今天谈谈很…

C# Avalonia 15- Animation- CachingTest

C# Avalonia 15- Animation- CachingTestCachingTest.axaml代码<Window xmlns="https://github.com/avaloniaui"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http:/…

Oracle故障分析:lsnrctl start启动监听很慢(AIX平台)

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。Oracle故障分…

银川做淘宝网站的可以上传网站的免费空间

在Gurobi中&#xff0c;你可以使用model.status来获取求解过程中的模型状态。可以使用了model.status来检查模型是否找到最优解。模型状态是一个Gurobi的常量&#xff0c;表示了求解过程中的不同状态。 以下是一些常见的模型状态&#xff1a; GRB.OPTIMAL: 最优解被找到。GRB…

网站建设自主开发的三种方式wordpress 小视频插件

以下实验是利用逍遥模拟器搭建的简易计算器页面 对现有功能说明&#xff1a;可实现双目运算和开方单目运算&#xff1b; 待改进&#xff1a;需要实现表达式的计算&#xff1b;以及负数参与运算&#xff1b; //XML代码<?xml version"1.0" encoding"utf-8&q…

事务和Spring常用注解的总结

1. 事务事务的概念: 事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作 要么同时成功,要么同时失败。 事务操作步骤:事务控制主要三步操…

男男床上爱做 网站重庆seo网络推广关键词

武器库篇之Git的分支使用(三十九) Git分支是一种用于在项目中并行开发和管理代码的功能。分支允许开发人员在不干扰主要代码的情况下创建新的代码版本&#xff0c;以便尝试新功能、修复错误或独立开发功能。一般正常情况下&#xff0c;开发人员开发一个软件&#xff0c;会有两…

ssh做电商 网站wordpress百度分享

用户的数据一般都是存储于数据库&#xff0c;数据库的数据是落在磁盘上的&#xff0c;磁盘的读写速度可以说是计算机里最慢的硬件了。 当用户的请求&#xff0c;都访问数据库的话&#xff0c;请求数量一上来&#xff0c;数据库很容易就奔溃的了&#xff0c;所以为了避免用户直…

安徽专业做网站的大公司上海市工程咨询协会

在c的学习中&#xff0c;我们经常被应该如何使用指针和引用这个问题所困扰&#xff0c;那么我这里给大家说一下在我的学习过程中对指针和引用的理解&#xff0c;和它们之间的区别&#xff0c;希望各位朋友给出不同的意见并且指出我在学习中的一些错误首先我们来聊一下指针&…