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

01背包与完全背包学习总结

背包问题分类见下图

参考学习点击:代码随想录01背包讲解

01背包问题:

核心思路:

1、先遍历物品个数,再遍历背包容量。因为容量最先是最大的,往背包里放物品,所以背包容量在慢慢减少,但背包容量需要大于每一个物品体积

2、每个物品有2个选择:选中和不选中。

3、选中的结果是背包剩余容量的最大价值+选中物品的价值;

4、不选中的结果是背包剩余容量还是不变,最大价值还是背包剩余容量的最大价值

 public static void main(String[] args) {int[] weight = {1, 3, 4};  //每个物品体积int[] value = {15, 20, 30}; // 每个物品价值int bagWight = 4;            // 背包容量testWeightBagProblem(weight, value, bagWight);}public static void testWeightBagProblem(int[] weight, int[] value, int bagWeight){//定义dp数组:dp[j]表示背包容量为j时,能获得的最大价值int[] dp = new int[bagWeight + 1];//背包容量来定义dp数组for (int i = 0; i < weight.length; i++){ //先遍历物品for (int j = bagWeight; j >= weight[i]; j--){ //再遍历背包,背包容量是从最大一直慢慢减少          //每个物品有2种选择,选中与不选中:选中的话,背包价值=背包容量剩余物品的价值在加上选中物品的价值//不选中的话,背包价值=背包容量j的价值dp[j] = Math.max(dp[j], dp[j - weight[i]] + value[i]);}}//打印dp数组for (int j = 0; j <= bagWeight; j++){System.out.print(dp[j] + " ");}}

完全背包问题:

http://www.lryc.cn/news/239557.html

相关文章:

  • 基于单片机的公共场所马桶设计(论文+源码)
  • 注解案例:山寨Junit与山寨JPA
  • Codeforces Round 822 (Div. 2)(D前缀和+贪心加血量)
  • 不停的挖掘硬盘的最大潜能
  • Java游戏之飞翔的小鸟
  • PostgreSQL (Hologres) 日期生成
  • HCIP-一、RSTP 特性及安全
  • 智能高效的转运机器人,为物流行业注入新动力
  • 操作系统(三)| 进程管理下 经典进程问题分析 线程 死锁
  • vue3使用tsx自定义弹窗组件
  • [笔记] 错排问题 #错排
  • Ajax进阶
  • RedisTemplate使用详解
  • 6.Gin 路由详解 - GET POST 请求以及参数获取示例
  • CMakeLists.txt基础指令与cmake-gui生成VS项目的步骤
  • IT应用运维最常用指标
  • Go中各种newreader和newbuffer的使用
  • visual studio 如何建立 C 语言项目
  • app小程序定制开发的优势|企业软件网站建设
  • 物联网AI MicroPython学习之语法 WDT看门狗外设
  • JVM线程的几种状态
  • 基于单片机停车场环境监测系统仿真设计
  • 每日一题:LeetCode-589.N叉树的前序遍历
  • PTA 7-2 简单计算器
  • 9、鸿蒙应用桌面图标外观和国际化
  • oracle rac 19c修改不同网段public ip
  • 【Django-DRF用法】多年积累md笔记,第(4)篇:Django-DRF反序列化详解
  • OpenAI宣布暂停ChatGPT plus用户订阅,解决方案,无需等待立马升级
  • 如何将 Docsify 项目部署到 CentOS 系统的 Nginx 中
  • 小程序存在优惠卷遍历,但是歪了