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

重庆建站模板平台缅甸今日新闻

重庆建站模板平台,缅甸今日新闻,展示型网站建设流程,图片在线制作编辑一、题目概述 二、思路方向 为了解决这个问题,我们可以使用回溯算法来找到所有可能的组合,使得组合中的数字之和等于目标数 target。因为数组中的元素可以无限制地重复选择,所以在回溯过程中,我们不需要跳过已经选择的元素&#x…

一、题目概述

二、思路方向

       为了解决这个问题,我们可以使用回溯算法来找到所有可能的组合,使得组合中的数字之和等于目标数 target。因为数组中的元素可以无限制地重复选择,所以在回溯过程中,我们不需要跳过已经选择的元素,而是可以从当前位置开始继续选择。

三、代码实现  

import java.util.ArrayList;  
import java.util.Arrays;  
import java.util.List;  public class Solution {  List<List<Integer>> result = new ArrayList<>();  public List<List<Integer>> combinationSum(int[] candidates, int target) {  Arrays.sort(candidates); // 对数组进行排序,有助于提前结束回溯  List<Integer> tempList = new ArrayList<>();  backtrack(candidates, target, 0, tempList);  return result;  }  private void backtrack(int[] candidates, int remain, int start, List<Integer> tempList) {  if (remain < 0) {  return; // 如果剩余需要达到的和已经是负数,则剪枝  }  if (remain == 0) {  result.add(new ArrayList<>(tempList)); // 如果剩余需要达到的和为0,则找到了一种符合条件的组合  return;  }  for (int i = start; i < candidates.length; i++) {  // 因为元素可以重复选择,所以我们不需要跳过已经选择过的元素  // 但可以通过排序和剪枝来避免不必要的搜索  if (i > start && candidates[i] == candidates[i - 1]) {  continue; // 跳过重复的元素,避免产生重复的组合  }  tempList.add(candidates[i]);  backtrack(candidates, remain - candidates[i], i, tempList); // 注意这里是从i开始,允许选择相同的数字  tempList.remove(tempList.size() - 1); // 回溯,撤销选择  }  }  public static void main(String[] args) {  Solution solution = new Solution();  int[] candidates = {2, 3, 6, 7};  int target = 7;  List<List<Integer>> combinations = solution.combinationSum(candidates, target);  for (List<Integer> combination : combinations) {  System.out.println(combination);  }  }  
}

执行结果: 

四、小结

       在这个解决方案中,我们首先对数组进行排序,这是为了在处理过程中能够更方便地进行剪枝和跳过重复元素。然后,我们使用一个递归函数 backtrack 来遍历所有可能的组合。在递归函数中,我们检查当前的和是否等于目标值,或者是否已经是负数(如果是负数则剪枝)。然后,我们遍历数组,从当前位置开始选择元素,并递归地调用 backtrack 函数,传入剩余需要达到的和、下一个开始的位置(允许选择相同的数字)、以及当前的组合列表。最后,在回溯过程中,我们需要撤销选择,以便尝试其他可能的组合。

       注意,在这个解决方案中,我们使用了 List<List<Integer>> 来存储所有可能的组合,并且使用 ArrayList 作为内部的临时列表来构建每个组合。在找到一种符合条件的组合时,我们通过创建一个新的 ArrayList 实例来将其添加到结果列表中,以避免在后续的回溯过程中修改已经添加到结果列表中的组合。

 结语 

只有流过血的手指

才能弹出世间的绝唱

!!!

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

相关文章:

  • 网络公司网站建设费入什么科目网站关键词提升
  • 湛江网站制作方案外链网站推荐几个
  • 中山外贸网站建设我要恢复百度
  • 深圳广告网站设计制作个人小白如何做手游代理
  • 哪家网站建设最好seo关键词搜索和优化
  • 怎样在一个虚拟服务器里做两个网站个人网站开发网
  • 深圳住房建设局网站申报电商网页制作教程
  • 东宁网站制作百度推广登录平台登录
  • 做网站合同范本苏州网站制作开发公司
  • 云阳网站建设公司百度网址大全免费下载
  • html5高端红色织梦网络公司网站seo百度刷排名
  • 小企业网站建设新市场报价下载百度极速版
  • 老罗做的网站色盲测试图免费测试
  • php网站 php有什么用软文300字介绍商品
  • 免费网站哪个好免费网站入口在哪
  • 网站建设全包互联网营销顾问是做什么的
  • 太原制作网站的公司seo入门教程网盘
  • 沈阳妇科医院哪个好优化公司结构
  • 焦作网站建设哪家便宜网站建设公司网站
  • 北京知名网站推广东莞网站优化公司哪家好
  • 网站建设 数据归属seo云优化外包
  • 做网站带来好处微信客户管理系统平台
  • 拼团做的比较好的网站中国重大新闻
  • 街舞舞团公司做网站如何自己创造一个网站平台
  • 做招牌的网站有哪些网站优化排名软件
  • 佛山营销手机网站建设搜索关键词优化排名
  • 新网站怎么做seo 风享东莞seo公司
  • 代码怎么做网站电脑培训学校课程
  • 服饰工厂网站建设企业网站开发费用
  • 北京环保行业网站建设山西太原网络推广