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

淄博网站建设铭盛信息丹阳信息网

淄博网站建设铭盛信息,丹阳信息网,最好的网站模板下载网站,广西建设网官网在线服务本文主要讲解组合的要点与细节#xff0c;以及回溯算法的解题步骤#xff0c;按照步骤思考更方便理解 c和java代码如下#xff0c;末尾 给定两个整数 n 和 k#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 具体要点#xff1a; …本文主要讲解组合的要点与细节以及回溯算法的解题步骤按照步骤思考更方便理解  c和java代码如下末尾 给定两个整数 n 和 k返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 具体要点 1. 首先这道题的暴力解法是k层for循环遍历所有的情况。但是这样子时间复杂度会很高。所以对于这类排列组合的问题通常我们使用回溯算法来进行遍历可以花一分钟参考回溯的前言概述。 2. 然后让我们来回顾一下回溯回溯本质是一个树结构通常是由两个结构组成for递归。 其中for用来表示树的宽度遍历每层的集合元素集可以理解一个节点有多少个孩子这个for循环就执行多少次。 递归用来表示树的深度 3. 对于本题要求我们需要先创建两个数组一个用来存放最终的结果一个用来存放过程中每次的结果 vectorvectorint res; //用来存放最终的结果 vectorint temp; //用来存放过程中每次的结果4. 接着我们就可以考虑回溯算法的实现具体包括两部分for循环递归 首先我们来考虑递归说到递归就要思考递归三要素 递归函数参数与返回值终止条件单层递归逻辑 返回值由于我们是直接操作数组不像二叉树一样需要返回节点所以递归的返回值是void 参数回溯算法中的递归参数较多我们在写代码过程中慢慢添加 终止条件也就是我们收集结果的条件当我们的temp存放的数量等于k时就需要收集结果了 单层递归逻辑添加当前元素a到temp中——a向下递归——移除刚才添加的元素a 其次让我们考虑一下for循环的细节 for循环的起始值应该是什么呢 这个细节是回溯中重要的点因为本题是“组合”所以不需要顺序即{12}和{21}是一个意思只保留一个所以下一层递归时起始值就1从而达到去重的目的。 void backtracing(int n, int k,vectorvectorint res, vectorint temp,int start) {//终止条件if (temp.size() k) {//收集结果res.push_back(temp);return;}for (int i start; i n; i) {temp.push_back(i);//添加当前元素backtracing(n, k, res, temp, i 1);//相下递归起始值1temp.pop_back();//删除刚才添加的元素实现回溯}return;} 以上就是回溯的整体逻辑让我们总结一下重要的细节 递归的返回值递归的终止条件for循环的起始值 在回溯过程中大家重点思考一下这几个细节点有助于我们更好的实现代码 如果觉得我的讲解有一点帮助十分感谢您的喜欢。 c代码 #includebits/stdc.h using namespace std;class Solution { public:vectorvectorint combine(int n, int k) {//组合不考虑顺序vectorvectorint res;vectorint temp;backtracing(n, k, res, temp, 1);return res;}void backtracing(int n, int k,vectorvectorint res, vectorint temp,int start) {//终止条件if (temp.size() k) {//收集结果res.push_back(temp);return;}for (int i start; i n; i) {temp.push_back(i);//添加当前元素backtracing(n, k, res, temp, i 1);//相下递归temp.pop_back();//删除刚才添加的元素实现回溯}return;}}; java代码 class Solution {public ListListInteger combine(int n, int k) {ListListInteger res new ArrayListListInteger();ListInteger temp new ArrayList();backtracking(n, k, res, temp, 1);return res;}public void backtracking(int n, int k, ListListInteger res, ListInteger temp, int start) {//终止条件if (temp.size() k) {res.add(new ArrayList(temp));return;}for (int i start; i n; i) {temp.add(i);backtracking(n, k, res, temp, i 1);temp.remove(temp.size() - 1);}return;} }
http://www.w-s-a.com/news/227075/

相关文章:

  • 北京建网站的公司哪个比较好网站开通告知书
  • 网站负责人 主体负责人黑龙江 建设监理协会网站
  • 手机网站焦点图代码建设工程质量检测网站
  • 墙绘做网站推广有作用没html网页制作用什么软件
  • 企业做网站有用吗网站推广的常用方法有哪些?
  • 景安做网站教程互联网小程序开发
  • 桂林北站离阳朔多远贵州省建设厅住房和城乡建设官网二建考试
  • 浙江省建设厅 网站是多少wordpress淘宝客一键
  • 网站流量少怎么做5个不好的网站
  • 随州网站建设有限公司个人申请注册公司需要多少钱
  • 东莞做商城网站建设wordpress批量下载外链图片
  • 新网站建设运营年计划书仓山区建设局招标网站
  • 网站开发天津网站建设项目组织图
  • 网站开发认证考试石家庄高端网站开发
  • 网站建设第一步怎么弄站酷网页
  • 设备网站模板江西的赣州网站建设
  • 邯郸营销型网站国际招聘人才网
  • hexo wordpress 主题织梦网站优化教程
  • 网站建设方案及上海市建设协会网站
  • 轴承外贸网站怎么做南宁网站排名优化公司哪家好
  • 沈阳企业网站建站郴州优化公司
  • cctv5+手机在线直播观看seo关键词排名优化方法
  • 网站建设公司怎么谈单怎么开通微信小程序商店
  • 深圳做网站案例一个服务器可以备案几个网站
  • 网络营销策划名词解释泉州百度推广排名优化
  • 一键生成网站的软件互联网营销师是干什么
  • 网站后台管理水印怎么做手机优化设置
  • 哪个网站做图文素材多wordpress++优化
  • 建设网站就选用什么样的公司网站类型分类有哪些
  • 找平面设计师网站网站建设须知