当前位置: 首页 > wzjs >正文

有关网站建设文章科技设计公司网站模板下载

有关网站建设文章,科技设计公司网站模板下载,为什么做网站要用谷歌浏览器,网站策划是做什么的学习计划:3个月内算法小成,完成leetcode hot100 当前进度:学完数组、链表、哈希表、字符串、双指针、二叉树 刷题语言:Python 时间:2025/05/19-2025/05/21,2025/06/17- 八、回溯算法 学习链接&#xff…

学习计划:3个月内算法小成,完成leetcode hot100

当前进度:学完数组、链表、哈希表、字符串、双指针、二叉树

刷题语言:Python

时间:2025/05/19-2025/05/21,2025/06/17-

八、回溯算法

学习链接:代码随想录

1、回溯算法理论基础

题目分类

组合

组合

电话号码的字母组合
组合总和
组合总和II
组合总和III
分割分割回文串
复原IP地址
子集子集
子集II
全排列全排列
全排列II
棋盘问题N皇后
解数独
其他递增子序列(类似子集)
重新安排行程

什么是回溯法?

        回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。所以以下讲解中,回溯函数也就是递归函数,指的都是一个函数

回溯法的效率

        回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案,如果想让回溯法高效一些,可以加一些剪枝的操作,但也改不了回溯法就是穷举的本质,所以回溯法并不是什么高效的算法。

        那么既然回溯法并不高效为什么还要用它呢?

        因为没得选,一些问题能暴力搜出来就不错了,撑死了再剪枝一下,还没有更高效的解法。此时大家应该好奇了,都什么问题,这么牛逼,只能暴力搜索。

回溯法解决的问题

回溯法,一般可以解决如下几种问题:

  • 组合问题:N个数里面按一定规则找出k个数的集合
  • 切割问题:一个字符串按一定规则有几种切割方式
  • 子集问题:一个N个数的集合里有多少符合条件的子集
  • 排列问题:N个数按一定规则全排列,有几种排列方式
  • 棋盘问题:N皇后,解数独等等

如何理解回溯法

        回溯法解决的问题都可以抽象为树形结构,是的,我指的是所有回溯法的问题都可以抽象为树形结构!

        因为回溯法解决的都是在集合中递归查找子集,集合的大小就构成了树的宽度,递归的深度就构成了树的深度

        递归就要有终止条件,所以必然是一棵高度有限的树(N叉树)。

2、组合

题目:给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。

示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]

思路:把组合问题抽象为如下树形结构,图中可以发现n相当于树的宽度,k相当于树的深度图中每次搜索到了叶子节点,我们就找到了一个结果。

class Solution:def combine(self, n: int, k: int) -> List[List[int]]:res = []self.backtracking(n,k,1,[],res)return resdef backtracking(self,n,k,startIndex,path,res):#一共有k层for循环,每次递归就是一次for循环if len(path)==k:#终止条件res.append(path[:]) #将 path 的浅拷贝添加到列表 res 中,如果append(path),path变res中的元素也变returnfor i in range(startIndex,n+1):path.append(i) #处理节点self.backtracking(n,k,i+1,path,res)path.pop()#i=1  12 弹出2 | 13 弹出3 | 14 弹出4#i=2  23 弹出3 | 24 弹出4#i=3  34 弹出4
class Solution:def combine(self, n: int, k: int) -> List[List[int]]:res = []path = []def dfs(i):d = k-len(path) #还需要枚举的数字个数if d == 0:#结束递归res.append(path.copy())returnfor j in range(i,0,-1): #倒序枚举path.append(j)dfs(j-1)path.pop()dfs(n)#n=4   43 弹出3| 42 弹出2 | 41 弹出1 结束#n=3   32 弹出2| 31 弹出1 结束#n=2   21 弹出1 结束return res
  • 时间复杂度:分析回溯问题的时间复杂度,有一个通用公式:路径长度×搜索树的叶子数。对于本题,它等于 O(k⋅C(n,k))
  • 空间复杂度: O(n)

3、组合(剪枝优化)

class Solution:def combine(self, n: int, k: int) -> List[List[int]]:res = []self.backtracking(n,k,1,[],res)return resdef backtracking(self,n,k,startIndex,path,res):if len(path)==k:#终止条件res.append(path[:])returnfor i in range(startIndex,n-(k-len(path))+2): #优化path.append(i) self.backtracking(n,k,i+1,path,res)path.pop()

4、组合总和III


文章转载自:

http://k3bHj3iB.pwbps.cn
http://aCzQvdF0.pwbps.cn
http://TAb1FPFf.pwbps.cn
http://GfmRzxxG.pwbps.cn
http://GCJE8nEL.pwbps.cn
http://OG1WLllg.pwbps.cn
http://A19lsJjd.pwbps.cn
http://Xm2Hsvjf.pwbps.cn
http://Ekk9AlkE.pwbps.cn
http://EPHrFIzO.pwbps.cn
http://kVaEkQxw.pwbps.cn
http://vziUcJ35.pwbps.cn
http://dEJ5qxby.pwbps.cn
http://OyTdXjZa.pwbps.cn
http://C90vpTp8.pwbps.cn
http://7OTnLSO4.pwbps.cn
http://AHOjonw4.pwbps.cn
http://IDQU7rVt.pwbps.cn
http://fsGXXxlU.pwbps.cn
http://wnCb64NS.pwbps.cn
http://15G7LibV.pwbps.cn
http://suKLbBNl.pwbps.cn
http://Sx8RfQKO.pwbps.cn
http://7p8vp3Oz.pwbps.cn
http://IRQagPnc.pwbps.cn
http://uU5S5D6Y.pwbps.cn
http://Ud1tYnts.pwbps.cn
http://3llmnElF.pwbps.cn
http://oWZiW0cH.pwbps.cn
http://UFHMLpAQ.pwbps.cn
http://www.dtcms.com/wzjs/673662.html

相关文章:

  • 西宁市公司网站建设网站图标代码
  • 钦州公司做网站手机端在哪里打开
  • 江苏建设网站首页wordpress用户导出
  • 查建筑公司资质的网站京津冀协同发展的路径主要涉及
  • 手机网站优化指南手机资讯网站源码
  • vps服务器的iis网站交换神器
  • 网站qq号获取网站优化排名易下拉稳定
  • 给客户做网站iis建立的网站打不开
  • 如何在手机上做自己的网站凯里网站设计
  • 东莞效果好的网站建设图片展示网站php源码
  • 游戏logo设计网站企业黄页软件
  • 企业网站源码破解版浙江门户网站建设公司
  • 下载了网站源码南宁网站推广策略
  • 移动互联网开发方向包含哪些课程泰州百度seo
  • html制作手机网站电脑路由器做网站服务器吗
  • 广东手机网站建设报价怎样建网站视频教程
  • 网站 微信小程序怎么做佛山做外贸网站特色
  • 制作网站用的域名wordpress2345
  • 酒店用品网站建设建筑工程培训机构
  • 东莞做网站沃德网络规划设计师通过率最低
  • 绵阳市住房 和城乡建设局网站电脑软件界面设计
  • 网站建设与维护大学生总结腾讯网站建设推广
  • 网站建设竞价托管平台优化是什么意思
  • 保定网站制作公司外国做图网站
  • 北京手机网站开发个人网站用什么服务器
  • 网站建设东莞老铁博客重庆餐饮网站建设
  • 网站建设基础流程摘要安平做网站做推广电话
  • 网站为什么维护中上海做网站哪里好
  • 企业网站托管外包平台淘宝客网站里面catid=16
  • 解决做网站问题网站宝搭建网站环境