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

回溯算法找出来最优价格组合

找出所有最佳接近100和等于100的选择

import java.util.ArrayList;
import java.util.List;public class SubsetSum {public static void main(String[] args) {int[] nums = {30, 50, 20,80,100,30,20};List<List<Integer>> result = new ArrayList<>();backtrack(nums, 0, new ArrayList<>(), 0, result);System.out.println("所有组合:");for (List<Integer> combo : result) {System.out.println(combo + " → sum = " + combo.stream().mapToInt(Integer::intValue).sum());}}private static void backtrack(int[] nums, int start, List<Integer> current, int sum, List<List<Integer>> result) {if (sum > 100) return; // 剪枝:超过就不看了if (start == nums.length) {if (!current.isEmpty()) {result.add(new ArrayList<>(current)); // 保存当前组合}return;}// 选择当前元素current.add(nums[start]);backtrack(nums, start + 1, current, sum + nums[start], result);current.remove(current.size() - 1); // 撤销超过的  // 不选当前元素 选择后面的元素进行累加进行计算backtrack(nums, start + 1, current, sum, result);}
}
http://www.xdnf.cn/news/9784.html

相关文章:

  • 深度学习-梯度消失和梯度爆炸
  • 光的干涉、衍射与偏振
  • Python入门手册:模块和包的导入与使用
  • Cookie与Session深度解析:Web会话管理的核心技术
  • 健康管理软件未来趋势:三大核心功能深度解析
  • Windows下的Qtxlsx下载和编译打包成库
  • 消息队列从入门到实战:用外卖订单理解高并发系统的核心设计
  • YOLOv8 区域计数系统:基于计算机视觉的智能物体计数方案
  • vue3+element plus 自定义组件,单列的方块 图形加文字列表
  • 写作即是生活
  • 华南版权服务大厅启用:富唯智能携具身智能人形机器人亮相,赋能版权产业生态革新
  • 【深度学习-pytorch篇】2. Activation, 多层感知机与LLaMA中的MLP实现解析
  • 数据结构与算法:数位dp
  • 在多线程编程里,若要强制两个线程按特定次序访问相同内存区域,可借助多种同步机制达成
  • Linux软链接的目的
  • 召回增强RAPTOR策略
  • 响应式布局进阶:企业商城系统复杂交互页面的多端适配方案
  • Python训练打卡Day36
  • flutter加载dll 报错问题
  • Cesium实现标注动画
  • SMME 2025:创新海洋工程模式,迎接未来挑战
  • 深入解析 CountDownLatch、Semaphore 和CyclicBarrier
  • NHANES指标推荐:CircS
  • 3D LUT--颜色魔方
  • 生物化学:药品药物 营养和补充剂信息 第三方认证信息 常见误区 汇总
  • VirtualBox怎样安装Win10
  • 直角坐标系下 dxdy 微小矩形面积
  • 硬盘驱动器习题解析
  • 力扣刷题 -- 20.有效的括号
  • NR[ RF - 简介 ]