代码随想录Day42

Day 42 动态规划 part04

今日任务

  • 二维数组解决01背包问题
  • 一维数组解决01背包问题
    1. 分割等和子集

代码实现

二维数组解决01背包问题

    public static int maxValue(int maxWeight, int[] weight, int[] value) {int[][] dp = new int[weight.length][maxWeight + 1];for (int j = 1; j < dp[0].length; j++) {if (weight[0] <= j) {dp[0][j] = value[0];}}for (int i = 1; i < dp.length; i++) {for (int j = 1; j < dp[i].length; j++) {if (weight[i] > j) {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]);}}}return dp[weight.length - 1][maxWeight];}

一维数组解决01背包问题
代码简洁很多,但是明白二维之后才能更好的理解一维,一维的本质上就是在下一次i的循环中覆盖了上一层的数据

    public static int bagProblem(int maxWeight, int[] weight, int[] value) {int[] dp = new int[maxWeight + 1];for (int i = 0; i < weight.length; i++) {for (int j = maxWeight; j >= weight[i]; j--) {dp[j] = Math.max(dp[j], dp[j - weight[i]] + value[i]);}}return dp[maxWeight];}

变异背包问题,重点是理解dp[j]代表什么,物品的重量和价值分别是什么

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

今日总结

  1. 背包问题略难,变异的也很难想出来,有一个好处是代码比较简洁还能记得住;
  2. 今天小亏(其实对我来说也不是小亏了,因为仓位太分散,没什么大赚的时候,大赚也才赚2个点,今天亏1个多点已经很多了),每次节前感觉都不一样,上次是低点,博弈节后的利好,这次是四天不开盘,北向跑路把钱取出来投资别的?

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

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

相关文章

react native的事件通知 DeviceEventEmitter

1、 发送事件 import { View, DeviceEventEmitter } from react-native;const eventEmitter (status) > {DeviceEventEmitter.emit(eventDemo, { param: status }); } 2、接收订阅事件 useEffect(() > {const eventListener DeviceEventEmitter.addListener(eventDem…

【论文阅读】DETR 论文逐段精读

【论文阅读】DETR 论文逐段精读 文章目录 【论文阅读】DETR 论文逐段精读&#x1f4d6;DETR 论文精读【论文精读】&#x1f310;前言&#x1f4cb;摘要&#x1f4da;引言&#x1f9ec;相关工作&#x1f50d;方法&#x1f4a1;目标函数&#x1f4dc;模型结构⚙️代码 &#x1f4…

ubuntu-server部署hive-part4-部署hive

参照 https://blog.csdn.net/qq_41946216/article/details/134345137 操作系统版本&#xff1a;ubuntu-server-22.04.3 虚拟机&#xff1a;virtualbox7.0 部署hive 下载上传 下载地址 http://archive.apache.org/dist/hive/ apache-hive-3.1.3-bin.tar.gz 以root用户上传至…

多层PCB内部长啥样?

硬件工程师刚接触多层PCB的时候&#xff0c;很容易看晕。动辄十层八层的&#xff0c;线路像蜘蛛网一样。 画了几张多层PCB电路板内部结构图&#xff0c;用立体图形展示各种叠层结构的PCB图内部架构。 高密度互联板(HDI)的核心 在过孔 多层PCB的线路加工&#xff0c;和单层双…

java导出20w条数据

文章目录 前言一、前端代码二、后端代码总结 前言 在上次写的java导出excel的后&#xff0c;在导出20w条数据时出现了请求超时的情况&#xff0c;而且一次查询超多的数据会很慢&#xff0c;所以修改了一下&#xff0c; 针对数据量一旦过大前端请求需要一直等待超时的情况将前端…

Transformer - Positional Encoding 位置编码 代码实现

Transformer - Positional Encoding 位置编码 代码实现 flyfish import torch import torch.nn as nn import torch.nn.functional as F import os import mathclass PositionalEncoding(nn.Module):def __init__(self, d_model, dropout, max_len5000):super(PositionalEnco…

深度学习理论基础(六)注意力机制

目录 深度学习中的注意力机制&#xff08;Attention Mechanism&#xff09;是一种模仿人类视觉和认知系统的方法&#xff0c;它允许神经网络在处理输入数据时集中注意力于相关的部分。通过引入注意力机制&#xff0c;神经网络能够自动地学习并选择性地关注输入中的重要信息&…

基于 CentOS7 制作 Apache HTTPD 2.4.58 的RPM安装包

编译环境&#xff1a; 操作系统&#xff1a;CentOS7 httpd版本&#xff1a;2.4.58 制作工具&#xff1a;rpmbuild&#xff08;这个之前的文章有介绍&#xff0c;看这里&#xff09; 下载httpd源码&#xff1a; 官网目前的最新版本是2.4.58&#xff0c;下载备用&#xff0c…

http: server gave HTTP response to HTTPS client 分析一下这个问题如何解决中文告诉我详细的解决方案

这个错误信息表明 Docker 客户端在尝试通过 HTTPS 协议连接到 Docker 仓库时&#xff0c;但是服务器却返回了一个 HTTP 响应。这通常意味着 Docker 仓库没有正确配置为使用 HTTPS&#xff0c;或者客户端没有正确配置以信任仓库的 SSL 证书。以下是几种可能的解决方案&#xff1…

半导体制程离子注入注入的是哪些离子

离子注入是一种低温过程 通过该过程将一种元素的离子加速进入固体靶材&#xff0c;从而改变靶材的物理、化学或电学性质。离子注入用于半导体器件制造和金属精加工以及材料科学研究。如果离子停止并保留在目标中&#xff0c;则它们可以改变目标的元素成分&#xff08;如果离子…

开源充电桩设备监控系统技术解决方案

开源 | 慧哥充电桩平台V2.5.2&#xff08;支持 汽车 电动自行车 云快充1.5、云快充1.6 微服务 &#xff09; SpringBoot设备监控系统解决方案 一、引言 1.项目背景 随着物联网技术的快速发展&#xff0c;设备的智能化和网络化程度日益提高。在现代工业和信息化的背景下&#x…

6 个典型的Java 设计模式应用场景题

单例模式(Singleton) 场景: 在一个Web服务中,数据库连接池应当在整个应用生命周期中只创建一次,以减少资源消耗和提升性能。使用单例模式确保数据库连接池的唯一实例。 代码实现: import java.sql.Connection; import java.sql.SQLException;public class DatabaseConne…

上位机图像处理和嵌入式模块部署(qmacviusal边缘宽度测量)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面有一篇文章&#xff0c;我们了解了测量标定是怎么做的。即&#xff0c;我们需要提前知道测量的方向&#xff0c;灰度的方向&#xff0c;实际的…

“省钱有道”的太平鸟,如何真正“高飞”?

衣食住行产业中&#xff0c;服装品类消费弹性较大、可选属性较强&#xff0c;其发展可以显著反映当前的经济温度。 根据国家统计局数据&#xff0c;2023年1-12月&#xff0c;我国限额以上单位服装类商品零售额累计10352.9亿元&#xff0c;同比增长15.4%&#xff0c;增速比2022…

Python框架下的qt设计之JSON格式化转换小程序

JSON转换小程序 代码展示&#xff1a; 主程序代码&#xff1a; from PyQt6.QtWidgets import (QApplication, QDialog, QMessageBox )import sys import jsonclass MyJsonFormatter(jsonui.Ui_jsonFormatter,QDialog): # jsonui是我qt界面py文件名def __init__(self):super()…

【HTML】注册页面制作 案例二

&#xff08;大家好&#xff0c;今天我们将通过案例实战对之前学习过的HTML标签知识进行复习巩固&#xff0c;大家和我一起来吧&#xff0c;加油&#xff01;&#x1f495;&#xff09; 案例复习 通过综合案例&#xff0c;主要复习&#xff1a; 表格标签&#xff0c;可以让内容…

说明计算机视觉(CV)技术的优势和挑战

计算机视觉&#xff08;Computer Vision&#xff0c;CV&#xff09;技术是一种利用计算机科学和工程技术来处理和分析图像和视频的技术。以下是计算机视觉技术的优势和挑战的几个例子&#xff1a; 优势&#xff1a; 高效快速&#xff1a;计算机视觉技术可以在短时间内处理大量…

【Go】十七、进程、线程、协程

文章目录 1、进程、线程2、协程3、主死从随4、启动多个协程5、使用WaitGroup控制协程退出6、多协程操作同一个数据7、互斥锁8、读写锁9、deferrecover优化多协程 1、进程、线程 进程作为资源分配的单位&#xff0c;在内存中会为每个进程分配不同的内存区域 一个进程下面有多个…

集合的学习

为什么要有集合&#xff1a;集合会自动扩容 集合不能存基本数据类型&#xff08;基本数据类型是存放真实的值&#xff0c;而引用数据类型是存放一个地址&#xff0c;这个地址存放在栈区&#xff0c;地址所指向的内容存放在堆区&#xff09; 数组和集合的对比&#xff1a; 集…

Zookeeper 怎么实现分布式锁

基于ZooKeeper实现分布式锁的原理主要基于ZooKeeper提供的一些特性&#xff0c;包括有序性、唯一性、临时节点等。下面是基于ZooKeeper实现分布式锁的 基本原理 有序性&#xff1a;ZooKeeper保证所有写入操作的全局顺序性。当客户端向ZooKeeper写入数据时&#xff0c;ZooKeepe…