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

代码随想录算法训练营第35天 | 01背包问题二维、01背包问题一维、416. 分割等和子集

一、01背包问题二维

二维数组,一维为物品,二维为背包重量

import java.util.Scanner;public class Main{public static void main(String[] args){Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int bag = scanner.nextInt();int[] weight = new int[n];int[] value = new int[n];for(int i=0; i<n ; i++){weight[i] = scanner.nextInt();}for(int j=0; j<n ; j++){value[j] = scanner.nextInt();}int[][] dp = new int[n][bag+1];for(int j=weight[0]; j<=bag ; j++){dp[0][j] = value[0];}for(int i = 1 ; i<n ; i++){for(int j=0; j<=bag ; j++){if(j<weight[i]){dp[i][j] = dp[i-1][j];}else{dp[i][j] = Math.max(dp[i-1][j], dp[i-1][j-weight[i]]+value[i]);}}}System.out.println(dp[n - 1][bag]);}
}

二、01背包问题一维

在一维数组上更新,pd[j] 为容量为j的背包容纳的最大价值。

第一层循环是每个物品,第二层循环要从背包容量向前循环到当前物品重量,更新时判断【当前容量最大价值】和【放入当前物品后的总价值】的最高值。

import java.util.Scanner;public class Main{public static void main(String[] args){Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int bag = scanner.nextInt();int[] weight = new int[n];int[] value = new int[n];for(int i=0; i<n ; i++){weight[i] = scanner.nextInt();}for(int j=0; j<n ; j++){value[j] = scanner.nextInt();}int[] dp = new int [bag+1];for (int i = 0; i < n; i++) {for (int j = bag; j >=  weight[i]; j--) {dp[j] = Math.max(dp[j], dp[j - weight[i]] + value[i]);}}System.out.println(dp[bag]);}
}

三、416. 分割等和子集

利用背包问题的思路,看能否装满sum/2的背包,物品的重量和价值一样都是元素的数值

class Solution {public boolean canPartition(int[] nums) {if(nums ==null || nums.length < 2) return false;int sum = 0;for(int num : nums){sum += num;}if(sum%2 == 1) return false;int target = sum/2;int[] dp = new int[target+1];for(int i = 0 ; i<nums.length; i++){for(int j = target ; j>=nums[i] ; j--){dp[j] = Math.max(dp[j], dp[j - nums[i]] + nums[i]);}if(dp[target]==target) return true;}return dp[target]==target;}
}

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

相关文章:

  • 与中国联通技术共建:通过obdiag分析OceanBase DDL中的报错场景
  • IDEA 接入 Deepseek
  • 斗地主小游戏
  • 如何改变怂怂懦弱的气质(2)
  • C# OnnxRuntime部署DAMO-YOLO人头检测
  • 基于GeoTools的GIS专题图自适应边界及高宽等比例生成实践
  • 各种DCC软件使用Datasmith导入UE教程
  • 尚硅谷爬虫note15
  • 云原生系列之本地k8s环境搭建
  • 关于tomcat使用中浏览器打开index.jsp后中文显示不正常是乱码,但英文正常的问题
  • mysql foreign_key_checks
  • 开发环境搭建-06.后端环境搭建-前后端联调-Nginx反向代理和负载均衡概念
  • REST API前端请求和后端接收
  • 道可云人工智能每日资讯|《奇遇三星堆》VR沉浸探索展(淮安站)开展
  • 服务器数据恢复—raid5阵列中硬盘掉线导致上层应用不可用的数据恢复案例
  • 【Pandas】pandas Series swaplevel
  • esp32s3聊天机器人(二)
  • pyside6学习专栏(九):在PySide6中使用PySide6.QtCharts绘制6种不同的图表的示例代码
  • DVI分配器2进4出,2进8出,2进16出,120HZ
  • 迷你世界脚本文字板接口:Graphics
  • 5分钟速览深度学习经典论文 —— attention is all you need
  • Cursor + IDEA 双开极速交互
  • HDFS的设计架构
  • 为wordpress自定义一个留言表单并可以在后台进行管理的实现方法
  • tauri-plugin-shell插件将_blank的a标签用浏览器打开了,,,解决办法
  • 【大模型基础_毛玉仁】1.1 基于统计方法的语言模型
  • 使用 Docker 部署 RabbitMQ 并实现数据持久化
  • Pandas的数据转换函数
  • 影刀 RPA 实战开发阶段总结
  • Linux系统上安装kafka