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

手表网站制作照片广州30万人感染

手表网站制作照片,广州30万人感染,wordpress 分类目录前缀,自己做h5怎么做理论基础 回溯法和递归不可分割,回溯法是一种穷举的方法,通常需要剪枝来降低复杂度。回溯法有一个选择并退回的过程,可以抽象为树结构,回溯法的模板如下: void backtracking(参数) {if (终止条件) {存放结果;return;}…

理论基础 

回溯法和递归不可分割,回溯法是一种穷举的方法,通常需要剪枝来降低复杂度。回溯法有一个选择并退回的过程,可以抽象为树结构,回溯法的模板如下:

void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {处理节点;backtracking(路径,选择列表); // 递归回溯,撤销处理结果}
}

 77. 组合  

这道题是回溯的经典题目,按照递归三步走:

参数:

在这里要定义两个全局变量,一个用来存放符合条件单一结果,一个用来存放符合条件结果的集合。函数里一定有两个参数,既然是集合n里面取k个数,那么n和k是两个int型的参数。

然后还需要一个参数,为int型变量startIndex,这个参数用来记录本层递归的中,集合从哪里开始遍历(集合就是[1,...,n] )。

回溯函数结束条件:

path这个数组的大小如果达到k,说明我们找到了一个子集大小为k的组合了,此时用result二维数组,把path保存起来,并终止本层递归。

单层搜索的过程

回溯法的搜索过程就是一个树型结构的遍历过程,在如下图中,可以看出for循环用来横向遍历,递归的过程是纵向遍历。

77.组合1

如此我们才遍历完图中的这棵树。for循环每次从startIndex开始遍历,然后用path保存取到的节点i。可以看出backtracking(递归函数)通过不断调用自己一直往深处遍历,总会遇到叶子节点,遇到了叶子节点就要返回。backtracking的下面部分就是回溯的操作了,撤销本次处理的结果。

此外:比较重要的剪枝部分:

可以剪枝的地方就在递归中每一层的for循环所选择的起始位置

如果for循环选择的起始位置之后的元素个数 已经不足 我们需要的元素个数了,那么就没有必要搜索了。注意代码中i,就是for循环里选择的起始位置。

for (int i = startIndex; i <= n; i++) {

优化过程如下:

  1. 已经选择的元素个数:path.size();

  2. 还需要的元素个数为: k - path.size();

  3. 在集合n中至多要从该起始位置 : n - (k - path.size()) + 1,开始遍历

为什么有个+1呢,因为包括起始位置,我们要是一个左闭的集合。举个例子,n = 4,k = 3, 目前已经选取的元素为0(path.size为0),n - (k - 0) + 1 即 4 - ( 3 - 0) + 1 = 2。

最终详细代码如下:

class Solution
{
public:vector<int> path;vector<vector<int>> res;void backTracking(int n, int k, int startindex) {//endif (path.size() == k) {res.push_back(path);return;}// backtrackingfor (int i = startindex; i <= n - (k - path.size()) + 1; i++) {path.push_back(i);backTracking(n, k, i + 1);path.pop_back();}}vector<vector<int>> combine(int n, int k) {backTracking(n, k, 1);return res;}
};

http://www.yayakq.cn/news/497492/

相关文章:

  • 做网站公司松江东莞网站建设怎么收费
  • 个人什么取消网站备案中山做网络推广的公司
  • 邹平网站定制wordpress 菜单 锚点
  • 德兴网站seo免费的网站软件
  • 东胜网站制作找人做企业网站注意啥
  • 清河网站建设设计产品网络推广深圳
  • 兰州市网站建设公司赛雷猴是什么意思
  • 哪个网站可以做图片传统网站怎么换成WordPress
  • 视频上到什么地方可以做网站链接做简单网站代码
  • 有哪些做微场景的没费网站织梦网站栏目对应首页
  • 网站vr用什么做湖北中英双语网站建设
  • 深圳高品质网站建设服务做外贸网站那个平台好
  • 做网站的学什么行业垂直网站开发
  • 多语言版本网站制作做网站怎么插音乐循环
  • 做网站开专票税钱是多少个点网址短链接在线生成免费
  • 网站规划建设实训报告中国公司排名500强名单
  • 影视网站如何做seo郴州市建设网站
  • 学校的网站如何建设方案怎么用文件做网站
  • 个人网站取域名网络广告如何推广
  • 天猫开店流程及费用2023福田我要做网站优化比较好
  • 长沙装修网站排名网盘资源大全
  • 沈阳市城乡建设局网站网站反向链接
  • 制作网站要多少钱郑州房产网
  • 可以做微信游戏的网站有哪些wordpress评论ip
  • 网站建立定位企划中国网站建设市场规模
  • 如何给网站加二级域名如何做中英文网站设计
  • 百度如何注册公司网站山儿网站建设公司
  • 招商网站大全五金电器太原关键词优化平台
  • 外贸建站 服务器做营销的网站
  • 厦门建设银行官方网站计算机培训班推荐