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

技术支持 鼎维重庆网站建设专家能让网络非常流畅的软件

技术支持 鼎维重庆网站建设专家,能让网络非常流畅的软件,网站开发ckplayer加载失败,网站建设教程视频教程今天的练习基本就是回溯法组合问题,这一节只要看labuladong即可。 组合问题: 39. 组合总和---------------------形式三,元素无重可复选 链接:代码随想录 一次对,同样在进入下次循环时,注意startindex是从j…

 今天的练习基本就是回溯法组合问题,这一节只要看labuladong即可。

 组合问题:

39. 组合总和---------------------形式三,元素无重可复选

链接:代码随想录

 一次对,同样在进入下次循环时,注意startindex是从j开始,还是j+1开始

画图:

 代码:

class Solution {
public:
// 同一个数字可以无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。 
vector<vector<int>>v;
vector<int>mv;vector<vector<int>> combinationSum(vector<int>& candidates, int target) {backtracing(candidates,target,0);return v;}void backtracing(vector<int> &candidates,int target,int startIndex){if(target<0){return;}else if(target==0){v.push_back(mv);}else{for(int j=startIndex;j<candidates.size();j++){mv.push_back(candidates[j]);backtracing(candidates,target-candidates[j],j);mv.pop_back();}}}
};

代码随想录版,基本一样

class Solution {
private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& candidates, int target, int sum, int startIndex) {if (sum == target) {result.push_back(path);return;}// 如果 sum + candidates[i] > target 就终止遍历for (int i = startIndex; i < candidates.size() && sum + candidates[i] <= target; i++) {sum += candidates[i];path.push_back(candidates[i]);backtracking(candidates, target, sum, i);sum -= candidates[i];path.pop_back();}}
public:vector<vector<int>> combinationSum(vector<int>& candidates, int target) {result.clear();path.clear();sort(candidates.begin(), candidates.end()); // 需要排序backtracking(candidates, target, 0, 0);return result;}
};

40.组合总和II --------------形式二,元素可重,不可复选

链接:代码随想录

 

 代码,第一遍做错

class Solution {
public:vector<vector<int>>v;vector<int>mv;vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {backtracing(candidates,target,0);return v;}void backtracing(vector<int>&candidates,int target,int startIndex){if(target<0){return;}else if(target==0){v.push_back(mv);}else{for(int j=startIndex;j<candidates.size();j++){mv.push_back(candidates[j]);backtracing(candidates,target-candidates[j],j+1);mv.pop_back();}}}
};

报错:

 125 215重复

看labuladong这一节,讲的非常非常清晰

 

 

 

 一开始写的j大于0,不对

class Solution {
public:
//当给出的数组中存在重复的元素时,要通过给定数组的排序对组合/排列问题 排序进行去重
vector<vector<int>>v;
vector<int>mv;vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {sort(candidates.begin(),candidates.end());backtracing(candidates,target,0);return v;}void backtracing(vector<int> & candidates,int target,int startIndex){if(target<0){return;}else if(target==0){v.push_back(mv);}else{for(int j=startIndex;j<candidates.size();j++){// 要对同一树层使用过的元素进行跳过if(j>startIndex && candidates[j]==candidates[j-1])//zhijisuandiyige{continue;}mv.push_back(candidates[j]);backtracing(candidates,target-candidates[j],j+1);mv.pop_back();}}}
};

131.分割回文串 

链接:代码随想录

 我的思路是没有,直接看了代码随想录。

 也就是隔板法,比如string.size===16,则有15个空位,第一块隔板在15个空位上随便选一个,然后再放第二块隔板(第二块隔板在第一块隔板后),再放第三块隔板(第三块隔板在第二块隔板后)。

树的每一层,是检验放一块隔板、两块隔板。。。直到放到第15块隔板的情况。

逻辑比较复杂。因为下一层是上一层隔板的位置,总之看代码随想录,我自己的逻辑还是稍微模糊。

class Solution {
public:// 想起最长回文串那道题,不懂这里为什么要用回溯。//先写一个回文串的函数.//按照例子一,可以重复//貌似是数学里的隔板问题。则对于长度为16的string,最多可以放15个隔板。最少可以放1个隔板,且是在15个空位中任意放1个、两个。。。15个隔板vector<vector<string>>v;vector<string>mv;vector<vector<string>> partition(string s) {backtracing(s,0);return v;  }void backtracing(string &s,int startIndex){if(startIndex==s.size()){v.push_back(mv);return;}else{for(int j=startIndex;j<s.size();j++){if(is_huiwen(s,startIndex,j)){mv.push_back(s.substr(startIndex,j-startIndex+1));backtracing(s,j+1);//这里写错了,应该是从下一个位置开始找mv.pop_back();}}}}bool is_huiwen(string &s,int l,int r){while(l<=r && s[l]==s[r]){l++;r--;}if(l>r){return true;}return false;}
};

http://www.yidumall.com/news/37571.html

相关文章:

  • 优良的网站邮箱服务器提供商isp深圳建站公司
  • 东莞虎门今日疫情最新情况成都网站搜索排名优化公司
  • 大连app开发公司排名随州seo
  • 网页设计师简介seo优化排名方法
  • 在天津做网站的公司怎样进行seo推广
  • 免费在线做网站今日新闻摘抄十条简短
  • php网站开发前端公司页面设计
  • 提高网站的权重的最佳方法石家庄网站seo
  • seo大神做的网站相城seo网站优化软件
  • 网站首页像素优化公司治理结构
  • 中小型企业建设一个网站大概需要多少钱成功的营销案例及分析
  • 淘宝客 wordpress网站宁波谷歌seo
  • 找做牙工作上哪个网站济南百度竞价代运营
  • 大学生网站开发大赛腾讯效果推广
  • 网站设计个人心得google海外版入口
  • 网页设计怎么建站点优化设计三年级上册答案
  • 招聘网站入职分析表怎么做阿里云域名注册网站
  • 西安建设学院网站首页技能培训机构
  • 做企业手机网站淘宝排名查询工具
  • 一起做英语作业网站免费域名申请网站大全
  • 新公司网站建设费用怎么入账青岛网站seo分析
  • 网站模板源码推广软文范例大全500
  • 南昌网站建设电话合肥网站seo推广
  • 永久免费自助建站百度推广系统营销平台
  • 怎样做网址有自己的模板willfast优化工具下载
  • asp网站做文件共享上传广告推广图片
  • 联合早报 即时消息网站搜索排名优化价格
  • 站酷网素材图库软文广告案例分析
  • 做相册网站推荐常用的网络推广方法有
  • 招代理的网站要怎么做的营销策划咨询机构