【算法设计实验三】动态规划解决01背包问题

请勿原模原样复制!

01背包dp具体解释详见链接 ↓  

【算法5.1】背包问题 - 01背包 (至多最大价值、至少最小价值)_背包问题求最小价值_Roye_ack的博客-CSDN博客

关于如何求出最优物品选择方案?

  • 先在递归求dp公式时,若进行【选择】则在决策表ck中标记ck[i][j]=1 
  • 遍历求完dp公式后,逆向遍历决策表,从最后一个物品开始,如果ck[i][j]=1且ck[i-1][j-w[i]]=1,则标记st[i]=st[i-1]=1

import java.util.*;public class hdjs {public static void main(String[] args){Scanner sc=new Scanner(System.in);System.out.println("请输入物品数量和背包容量!");int n=sc.nextInt(),m=sc.nextInt();int[] st=new int[n+1]; //记录最终物品选择情况int[][] ck=new int[n+1][m+1];  //记录物品选or不选决策情况int[] w=new int[n+1],v=new int[n+1];System.out.println("请依次输入物品重量!");for(int i=1;i<=n;i++) w[i]=sc.nextInt();System.out.println("请依次输入物品价值!");for(int i=1;i<=n;i++) v[i]=sc.nextInt();int[][] f=new int[n+1][1010]; //f[i][j] 选择前i个物品,体积不超过j的最大价值f[0][0]=0;for(int i=1;i<=n;i++){for(int j=0;j<=m;j++){if(w[i]>j) //如果装不下该物品,则不选f[i][j]=f[i-1][j];else if(w[i]<=j) //如果可以装得下,则在求max(不选,选){if(f[i-1][j-w[i]]+v[i]>f[i-1][j]) ck[i][j]=1;f[i][j]=Math.max(f[i-1][j],f[i-1][j-w[i]]+v[i]);}}}//逆向追踪最优方案int k=m;for(int i=n;i>=1;i--)if(ck[i][k]==1){st[i]=1;k=k-w[i]; //判断减去该重量是否仍然为1}System.out.println("动态规划记录表如下!");for(int i=0;i<=n;i++){for(int j=0;j<=m;j++)System.out.print(f[i][j]+" ");System.out.println();}System.out.println();System.out.println("物品最优选择情况如下!");for(int i=1;i<=n;i++) System.out.print(st[i]+" ");System.out.println();System.out.print("最大价值为"+f[n][m]);}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/156373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Proteus下仿真AT89C51单片机串行口的问题

在Proteus下仿真AT89C51单片机的串行口的时候&#xff0c;Proteu不同版本下差别较大。     同样的程序&#xff0c;在7.8的老版本&#xff08;7.8版本的原理图仿真软件名称是ISIS 7 Professional&#xff09;下仿真串行口&#xff0c;收发均正常。但是&#xff0c;在8.13版…

打印lua输出日志

日志级别&#xff1a; ngx.STDERR 标准输出ngx.EMERG 紧急报错ngx.ALERT 报警ngx.CRIT 严重&#xff0c;系统故障&#xff0c; 触发运维告警系统ngx.ERR 错误&#xff0c;业务不可恢复性错误ngx.WARN 提醒&#xff0c; 业务中可忽略错误ngx.NOTICE 提醒&#xff0c; 业务中比较…

增速大幅下滑?基础L2博弈成本

在高阶智驾&#xff08;从ALC到NOA&#xff09;的光环之下&#xff0c;传统入门级基础L2级辅助驾驶赛道也在发生一些微妙的变化。 高工智能汽车研究院监测数据显示&#xff0c;2023年1-9月&#xff0c;基础L2在中国市场&#xff08;不含进出口&#xff09;乘用车前装标配交付45…

数据库存储引擎

一、MySQL体系结构 二、存储引擎-简介 存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的&#xff0c;而不是基于库的&#xff0c;所以存储引擎也可以被成为表的类型 MySQL 5.5版本之后&#xff0c;默认存储引擎就是InnoDB&#xff0c;之前…

十六进制字符串转成十进制数

需求 转码要求 案例 A2 转成 十进制数是 10 *16 2 162 代码 需要注意的是可能十六进制 里面有大小写&#xff0c;比如F 写成f&#xff0c; a 写成A&#xff0c;或者大小写混合&#xff0c;要提高鲁棒性就要两个都可行,算法很是简单&#xff0c;其实就是求取当前值x1&…

HarmonyOS云开发基础认证【最新题库 满分答案】

系列文章 HarmonyOS应用开发者基础认证【闯关习题 满分答案】 HarmonyOS应用开发者基础认证【满分答案】 HarmonyOS云开发基础认证【最新题库 满分答案】 目录 系列文章一、判断题二、单选题三、多选题 一、判断题 1.应用架构的演进依次经历了微服务架构、单体架构、Serverle…

Python数据结构——List

一、列表 1.1创建列表 &#xff08;1&#xff09;构造函数创建 dataListlist() &#xff08;2&#xff09;直接赋值 dataList[1,2,3,4,5] 1.2添加元素到列表 dataListlist() dataList.append(3) # > [3] 1.3删除元素 &#xff08;1&#xff09;删除第一个匹配的元素…

ArcGIS如何处理并加载Excel中坐标数据?

做GIS行业的各位肯定免不了跟数据打交道&#xff0c;其中数据的处理说复杂也复杂&#xff0c;因为我们要花时间去做数据的转换及调整工作&#xff0c;那说简单也简单&#xff0c;因为我们有很多的工具可以使用&#xff0c;那么今天我就给大家带来处理Excel中的GIS数据中的其中一…

导师散养,硕博士生如何进行学术自救?

https://mp.weixin.qq.com/s/PQkL6XKoQfysq_W9kmmiDA 在公众号上看到这篇文章&#xff0c;觉得挺有道理&#xff01; 经常在小红书看到很多学生吐槽导师散养的帖子&#xff0c;觉得蛮有趣的。 我整个的学术历程&#xff0c;可能也算是一种「散养」历程。如果说硕士是被动选择的…

图像处理02 matlab中NSCT的使用

06 matlab中NSCT的使用 最近在学习NSCT相关内容&#xff0c;奈何网上资源太少&#xff0c;简单看了些论文找了一些帖子才懂了一点点&#xff0c;在此分享给大家&#xff0c;希望有所帮助。 一.NSCT流程 首先我们先梳理一下NSCT变换的流程&#xff0c;只有清楚流程才更好的理清…

代码随想录算法训练营第23期day57|739. 每日温度、496.下一个更大元素

一、739. 每日温度 力扣题目链接​​​​​​ 1. 什么时候用单调栈? 通常是一维数组&#xff0c;要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置&#xff0c;此时就要想到可以用单调栈。 单调栈的本质是空间换时间,更直白来说&#xff0c;就是用一个栈来…

Python不会调试不够丝滑?那事你不会logging---剖析!

前言: 一直都是手动debug进行调试,F8都按烂了;最近用logging进行提前布置,发现这样更能让代码走得丝滑,同时也能尽早发现问题! 基本概念&#xff1a; Logger - 日志记录接口 Handler - 确定日志记录发送到不同的地方&#xff08;文件、控制台等&#xff09; Level - 定义了日…

git 构建报错

钉钉插件]当前任务未配置机器人&#xff0c;已跳过 org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: WorkflowScript: 4: Tool type “maven” does not have an install of “maven-3.8.8” configured - did you mean “Maven-3.8.8”? …

高斯DWS数据库分页查询优化思路

除了高斯其它关系型数据可也一样可以使用 官方链接&#xff1a;EXPLAIN_数据仓库服务 GaussDB(DWS)_8.2.0_DML语法_华为云 参考链接&#xff1a;MySQL大数据量分页查询方法及其优化_mysql大数据量分页查询优化-CSDN博客 数据量过大&#xff0c;分页查询优化 背景&#xff1a;…

数据治理平台之数据采集细节

计算HDFS系统中分区文件的大小 利用递归对树形结构遍历 准备阶段 递归起点访问工具收集数据的容器 遍历阶段 中间节点&#xff1a;根据需要处理计算&#xff0c;收集数据&#xff0c;继续递归叶子节点&#xff1a;收集数据 写代码注意事项 不要反复连接数据库&#xff0c;…

类方法,静态方法和实例方法的区别及应用场景

在 Python 中&#xff0c;有三种不同类型的方法&#xff1a;实例方法、类方法和静态方法。它们各自有不同的特点和应用场景&#xff1a; 实例方法&#xff08;Instance Method&#xff09;&#xff1a; 实例方法是最常见的方法类型&#xff0c;在方法定义中第一个参数通常被命…

Linux 串口应用编程

1 串口 API Linux串口通信&#xff1a; 在 Linux 系统中&#xff0c;操作设备的统一接口就是&#xff1a; open/ioctl/read/write 。 对于 UART &#xff0c;又在 ioctl 之上封装了很多函数&#xff0c;主要是用来设置行规程。所以对于 UART &#xff0c;编程的套路就是…

flutter vscode gradle 配置

我这边主要改了如图两个文件&#xff0c;然后把Gradle的问题解决了 参考文章&#xff1a; flutter运行Runt imeException: Timeout of 120000问题-CSDN博客 flutter配置gradle&#xff08;个人笔记&#xff0c;非教程&#xff09;_flutter gradle_追寻着星星的方向的博客-CSD…

ATTCK实战系列——红队实战(一)

文章目录 网络拓扑环境搭建外网渗透信息收集端口扫描目录扫描 漏洞利用phpmyadmin拿shellgeneral_log_file写一句话蚁剑连接 网站后台拿shell关闭防火墙新建用户&#xff0c;开启3389 内网渗透&#xff08;一&#xff09;CSCS木马上线信息收集hashdumpMimikatz抓取明文密码 权限…

姓氏情侣家庭亲子谐音顽梗头像分销流量主微信抖音小程序开发

姓氏情侣家庭亲子谐音顽梗头像分销流量主微信抖音小程序开发 姓氏情侣头像&#xff1a;提供各种姓氏的情侣头像模板&#xff0c;用户可根据自己的姓氏选择合适的头像进行定制。 家庭头像&#xff1a;为家庭成员提供多种形式的头像模板&#xff0c;让用户可以选择合适的家庭头像…