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

咖啡网站开发软件外包公司排行

咖啡网站开发,软件外包公司排行,有没有单纯做旅游攻略的网站,建立淘宝客网站从这道题开始,我们正式进入回溯算法的学习。之前在二叉树中只是接触到了一丢丢,而这里我们将使用回溯算法解决很多经典问题。 那么这道题是如何使用回溯算法的呢?在讲回溯之前,先说明一下此题是如何递归的。毕竟回溯递归不分家&a…

从这道题开始,我们正式进入回溯算法的学习。之前在二叉树中只是接触到了一丢丢,而这里我们将使用回溯算法解决很多经典问题。

那么这道题是如何使用回溯算法的呢?在讲回溯之前,先说明一下此题是如何递归的。毕竟回溯递归不分家,必须先有递归,才会有回溯。而这里的递归就是在题目所给集合的子集中使用for循环选择数字。考虑组合的无序性(1,2和2,1是相同的组合),那么在对递归得到的子集进行遍历时,需要用变量控制for循环的起始位置。另外,如果题目说明不能取重复数字,那么在对该控制变量赋值时,需要注意。举个例子:最开始的集合有1,2,3,4,那么我们第一次一定是从这个集合中选一个数。为了保证之后不重复选择1,我们下一步一定是从2,3,4这个集合中选一个数,以此类推。我们可以发现递归得到的子集范围在不断缩小。接下来讲一下回溯,我们需要写一个for循环将递归函数包起来,这个for循环的作用是遍历当前集合的所有数,假设在第一个集合中我们已经选了1这个数,然后递归选择第二个数,那么在选择第二个数的递归函数结束之后,我们可以将1弹出存储组合的数组,并通过for循环选择第一个集合中的第二个数,这样就得到了其他组合情况。这道题大家可以当做模版题记下来,之后的回溯算法的代码风格都与这道题大差不差。可以结合我下面的代码及注释理解这道题。

代码及注释如下:

class Solution {
private:vector<vector<int>> result; // 存放符合条件结果的集合vector<int> path; // 用来存放符合条件结果void backtracking(int n, int k, int startIndex) {if (path.size() == k) {result.push_back(path);return;}for (int i = startIndex; i <= n; i++) {path.push_back(i); // 处理节点backtracking(n, k, i + 1); // 递归path.pop_back(); // 回溯,撤销处理的节点}}
public:vector<vector<int>> combine(int n, int k) {result.clear(); // 可以不写path.clear();   // 可以不写backtracking(n, k, 1);return result;}
};

http://www.mmbaike.com/news/47714.html

相关文章:

  • 网站建设 源码百度推广管理平台登录
  • 合肥seo推广培训什么是优化师
  • 没有网站做优化网站结构
  • h5网站怎么做的吗电商营销策略
  • 为什么做网站要有自己的服务器如何让产品吸引顾客
  • 动漫网站建设重庆网站建设与制作
  • 网上学习做网站搜狗引擎搜索
  • 济宁网站建设软件开发微信营销的方法有哪些
  • 起重机网站怎么做深圳网站建设开发公司
  • js做网站统计广东队对阵广州队
  • 西安网站建设的网站重庆百度seo代理
  • 成都网站建设好的公司广东又出现新病毒
  • 投资公司网站建设方案网站测试报告
  • 新增备案网站品牌策划方案ppt
  • 一浪网站建设nba最新排名东西部
  • 做推文封面图网站seo入门版
  • 营销型网站价格实惠百度账户
  • wordpress企业网站建设全网搜索引擎
  • 公司网站怎么做教程站长推广工具
  • 人才网招聘网官网seo能干一辈子吗
  • 南宁营销型网站建设公司哪家好郑州seo哪家专业
  • 重庆网站如何做推广百度竞价排名广告定价
  • 网站建设外包被骗企业seo案例
  • 赣州专业企业网站建设seo推广论坛
  • 找考卷做要去哪个网站百度数据查询
  • 金融公司网站开发费用入什么科目搜索app下载
  • 想自己做网站 有免费的吗在线培训平台
  • 迈若网站建设成都进入搜索热度前五
  • 仓库管理系统app优化网站推广教程排名
  • 做设计私活的网站seo外包服务公司