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

凡科建站怎么做微网站竞价推广公司

凡科建站怎么做微网站,竞价推广公司,wordpress列表翻页有page,上海模板网站文章目录 40. 组合总和 II题目描述回溯算法 40. 组合总和 II 题目描述 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff…

文章目录

  • 40. 组合总和 II
    • 题目描述
    • 回溯算法

40. 组合总和 II

题目描述

给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

candidates 中的每个数字在每个组合中只能使用 一次 。

注意:解集不能包含重复的组合。

示例 1:

输入: candidates = [10,1,2,7,6,1,5], target = 8,
输出:
[
[1,1,6],
[1,2,5],
[1,7],
[2,6]
]

示例 2:

输入: candidates = [2,5,2,1,2], target = 5,
输出:
[
[1,2,2],
[5]
]

提示:

  • 1 <= candidates.length <= 100
  • 1 <= candidates[i] <= 50
  • 1 <= target <= 30

回溯算法

// 定义一个Solution类,用于解决组合总和II问题
class Solution {
public:// 定义一个公共方法combinationSum2,它接受一个整数数组candidates和一个整数target,// 返回一个二维整数数组,里面包含了所有可以使数字和为target的组合。vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {// 首先对数组进行排序,这会帮助我们更容易地找到组合,并且能够跳过重复的组合sort(candidates.begin(),candidates.end());// 输出排序后的数组元素,这一步通常是为了调试for(int i=0;i<candidates.size();i++)cout<<candidates[i]<<" ";// 定义一个布尔向量used,用于标记candidates中的元素是否被用在当前的组合中vector<bool> used(candidates.size(),false);// 调用backstracking函数,开始回溯算法backstracking(candidates, target, 0, 0, used);// 返回所有找到的组合return result;}private:// 定义一个私有变量result,用于存储所有找到的组合vector<vector<int>> result;// 定义一个私有变量path,用于存储当前正在考虑的组合vector<int> path;// 定义一个私有函数backstracking,它实现了回溯算法void backstracking(vector<int>& candidates,int target,int sum,int start,vector<bool>& used){// 如果当前组合的数字和大于目标数target,则当前路径不可能为解,回溯if(sum>target)return;// 如果当前组合的数字和等于目标数target,则找到了一个解,将它添加到result中if(sum==target){result.push_back(path);return;}// 从start开始遍历candidates数组,尝试每个可能的元素for(int i=start;i<candidates.size();i++){// 跳过重复的数字,以避免重复的组合,这是因为数组已经排序if(i>0 && candidates[i]==candidates[i-1] && !used[i-1])continue;// 将candidates[i]添加到当前路径path.push_back(candidates[i]);// 标记该元素为已使用used[i]=true;// 将candidates[i]的值加到当前和上,并递归调用backstracking,注意新的start是i+1,因为每个数字只能使用一次sum+=candidates[i];backstracking(candidates, target, sum, i+1, used);// 回溯,将最后一个元素从路径中删除并从当前和中减去,取消标记该元素path.pop_back();used[i]=false;// 从当前和中减去candidates[i]的值,为下一次迭代准备sum-=candidates[i];}}
};

代码主要由以下几个部分组成:

  • combinationSum2 公共方法:对给定数组排序,初始化用于记录元素使用情况的布尔向量,开始回溯搜索,最后返回结果。
  • backstracking 私有方法:实现了回溯算法的核心逻辑,通过递归尝试每个可能的元素,直到找到所有的组合或者终止搜索。
  • result 和 path 私有变量:分别用于存储找到的所有组合结果和当前递归路径中的组合。
  • used 布尔向量:用于标记数组 candidates 中的元素是否已经被使用过,以防止在同一路径中重复使用。
http://www.hkea.cn/news/14489/

相关文章:

  • 百度推广关键词规划师免费的seo教程
  • p2p网上贷款网站建设方案.docx西安网站建设比较好的公司
  • 建设公司网站开发方案南京百度快速排名优化
  • 网站建设的作用有哪些方面网站建设方案书
  • 成都房地产上市公司有哪些衡水网站优化推广
  • 珠海网站建设及优化互联广告精准营销
  • 用cms建网站seo系统推广
  • 黄页网品种大全2021搜索排名优化公司
  • 北京中交建设公司网站百度广告推广怎么收费
  • 企业手机端网站源码想做seo哪里有培训的
  • 自己做网站开发黄冈网站推广软件视频下载
  • 沈阳做网站最好的公司百度搜索引擎下载免费
  • wordpress 模板 破解宁波seo搜索排名优化
  • 做网站怎么赚流量seo sem论坛
  • 室内设计平面图包括整站优化案例
  • 做论坛网站数据库需多大营销传播服务
  • 广州在线图文网络科技中心网站建设泰州百度公司代理商
  • 郑州建网站的好处智推教育seo课程
  • 营销型网站与展示型网站bt种子搜索
  • 虚拟仿真实验室网站建设淘宝指数官网的网址
  • 企业网站管理系统湖南岚鸿种子资源
  • 手机代码网站有哪些问题吗沈阳关键字优化公司
  • 用php做网站视频百度统计数据
  • 网站建设中如何插入动图网站如何被搜索引擎收录
  • 猎头公司网站素材app代理推广合作50元
  • 计算机网站建设维护的基本知识星力游戏源码
  • 做文案选图片素材的网站昆明seo外包
  • 如何建设个人免费网站教程视频有哪些可以免费推广的平台
  • 专业网站托管外贸seo软件
  • 枣庄做网站做网站平台需要多少钱