算法训练营day38(补),动态规划6

package main

func max(a, b int) int {

  if a > b {

    return a

  }

  return b

}

背包最大重量为4。

物品为:

重量价值
物品0115
物品1320
物品2430

每件商品都有无限个!

问背包能背的物品最大价值是多少?

func package03(weight, value []int, bagweight int) int {

  dp := make([]int, bagweight+1)

//遍历物品

  for i := 0; i < len(weight); i++ {  

 //遍历背包容量

    for j := weight[i]; j <= bagweight; j++ {

      dp[j] = max(dp[j], dp[j-weight[i]]+value[i])

    }

  }

  return dp[bagweight]

}

//518. 零钱兑换 II

//求装满背包有几种方法,递推公式一般都是dp[i] += dp[i - nums[j]];

func change(amount int, coins []int) int {

  dp := make([]int, amount+1)

  dp[0] = 1

  for i := 0; i < len(coins); i++ {

    for j := coins[i]; j <= amount; j++ {

      dp[j] += dp[j-coins[i]]

    }

  }

  return dp[amount]

}

//377. 组合总和 Ⅳ

func combinationSum4(nums []int, target int) int {

  dp := make([]int, target+1)

  dp[0] = 1

  for j := 0; j <= target; j++ {

    for i := 0; i < len(nums); i++ {

      if j >= nums[i] {

        dp[j] += dp[j-nums[i]]

      }

    }

  }

  return dp[target]

}

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

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

相关文章

【leetcode】破解闯关密码 模板字符串

/*** param {number[]} password* return {string}*/ var crackPassword function(password) {return minNumspassword.sort((a,b)>{if(${a}${b}-${b}${a}>0){return 1;}else{return -1;}}).join(""); };巧用模板字符串对数组进行排序

Restful风格解释

示例对比 传统风格开发 Restful风格开发 结论&#xff1a; 传统风格开发中&#xff0c;前端不同操作使用不同的url来访问后端&#xff0c;使得访问变得麻烦restful风格中&#xff0c;前端使用相同的url来访问后端&#xff0c;但是用数据传送方式进行区分&#xff08;get为请求…

STM32标准库——(13)USART串口数据包

1.HEX数据包 2.文本数据包 3.HEX数据包接收 对于固定包长的HEX数据包&#xff0c;我们可以定义三个状态:等待包头、接收数据、等待包尾&#xff0c;每个状态。都可以用一个变量来标志&#xff0c;例如变量S来表示。这三个状志可以依次定义为S0、S1、S2。类似于置标志位&#xf…

Android Studio level过滤查看各个等级的日志

Android Studio level过滤查看各个等级的日志 旧版as可以在下方的日志输出框选择debug、info&#xff0c;warn、error日志&#xff0c;新版的需要通过在过滤框手动/联想输入 level:xxx&#xff0c;过滤相应等级的日志&#xff0c;如图&#xff1a; android studio/idea返回/前进…

javaee教程郑阿奇课后答案,三年经验月薪50k我是怎么做到的

个人背景 如标题所示&#xff0c;我的个人背景非常简单&#xff0c;Java开发经验1年半&#xff0c;学历普通&#xff0c;2本本科毕业&#xff0c;毕业后出来就一直在Crud&#xff0c;在公司每天重复的工作对我的技术提升并没有什么帮助&#xff0c;但小镇出来的我也深知自我努…

网络工程师笔记3

IP地址类型 A类 255.0.0.0B类 255.255.0.0C类 255.255.255.0D类 E类 子网掩码&#xff1a;从左到右连续的确定网络位 2-4-8-16-32-64-128-256 128 &#xff1a; 1000 0000 64 &#xff1a; 0100 0000 32 &#xff1a; 0010 0000 16 &#xff1a; 0001 0000 8 &am…

LeetCode 560 和为 K 的子数组

LeetCode 560 和为 K 的子数组 问题描述 给定一个整数数组 nums 和一个整数 k&#xff0c;统计并返回该数组中和为 k 的子数组的个数。 子数组是数组中元素的连续非空序列。 解决方法 我们可以使用哈希表来解决这个问题。具体步骤如下&#xff1a; 创建一个哈希表 map&am…

Java包装类缓存机制

1. 什么是 Java 包装类缓存机制? Java 中的包装类&#xff08;Wrapper Class&#xff09;是为了将基本数据类型转换为对象而存在的。在 Java 中&#xff0c;每个基本数据类型都有对应的包装类&#xff0c;如 Integer、Double 等。 Java 包装类缓存机制指的是&#xff0c;在某…

c++Boyer-Moore算法的介绍与代码实现(c++)

Boyer-Moore算法是一种用于字符串匹配的高效算法&#xff0c;主要用于在一个文本串中查找一个模式串的出现位置。它的主要思想是利用模式串中的字符分布信息来尽量减少比较的次数&#xff0c;从而提高匹配的效率。 Boyer-Moore算法的关键思想包括两个部分&#xff1a;坏字符规…

Linux和Windows集群中部署HTCondor

目录 1、集群架构 2、HTCondor版本 3、Linux系统安装 3.1、HTCondor安装 3.2、中央管理节点配置 3.3、其他节点配置 4、Windwos系统安装 5、安全配置 6、参考 1、集群架构 操作系统IP地址1*Ubuntu22.04192.168.1.742Ubuntu22.04192.168.1.603Ubuntu22.04192.168.1.6…

[FastDDS] 基于eProsima FastDDS的移动机器人数据中间件——介绍与准备工作

[FastDDS] 基于eProsima FastDDS的移动机器人数据中间件——介绍与准备工作 注明&#xff1a;无 本栏目主要讲述&#xff0c;基于eProsima FastDDS的移动机器人数据中间件的实现、使用、性能测试。 What is [ FastDDS ]: eProsima Fast DDS是DDS&#xff08;数据分发服务&…

Squid代理服务器配置

需求是&#xff1a;通过外网机&#xff08;跳板机&#xff09;访问内网机&#xff0c;并为内网机提供访问网络的能力。 【跳板机T】【内网机N】 公网IP&#xff1a;39.107.xx.xxx 跳板机IP&#xff1a;172.17.216.234 内网机IP&#xff1a;172.17.216.241 Squid代理服务器地址…

探讨分布式数据库ID生成解决方案

在技术面试中&#xff0c;面试官通常通过挑战应聘者的分布式系统知识来评估其能力。今天&#xff0c;让我们模拟一场面试现场&#xff0c;深入了解关于分布式数据库ID生成的解决方案。 面试官&#xff1a;嘿&#xff0c;小伙子&#xff0c;分布式数据库ID生成解决方案了解吗&a…

Linux磁盘设备LVM介绍和常用场景说明

Linux常见的物理设备数据备份和负载均衡模式 1. LVM技术说明2. 相关概念3. 常用命令3.1 安装lvm命令3.2 创建分区3.3 格式化成LVM3.4 其他格式化 4. 常用场景4.1 创建LVM并挂载4.2 LVM扩容4.2.1 xfs扩容4.2.2 ext4扩容 4.2 缩减逻辑卷lv4.3 缩减vg&#xff1a;&#xff08;迁移…

设计模式(二)单例模式

单例模式&#xff1a;确保一个类只有一个实例&#xff0c;并提供了全局访问点&#xff1b;主要是用于控制共享资源的访问&#xff1b; 单例模式的实现分为懒汉式和饿汉式。 懒汉式单例在需要时才会创建&#xff0c;而饿汉式单例则在类加载时立即创建实例&#xff1b; 单例模…

印象笔记 - Markdown 入门指南

一、Markdown 是什么&#xff1f; Markdown 是一种轻量级的「标记语言」&#xff0c;创始人为约翰格鲁伯&#xff0c;用简洁的语法代替排版&#xff0c;目前被越来越多的知识工作者、写作爱好者、程序员或研究员广泛使用。其常用的标记符号不超过十个&#xff0c;相对于更为复…

一文速览深度伪造检测(Detection of Deepfakes):未来技术的守门人

一文速览深度伪造检测&#xff08;Detection of Deepfakes&#xff09;&#xff1a;未来技术的守门人 前言一、Deepfakes技术原理卷积神经网络&#xff08;CNN&#xff09;&#xff1a;细致的艺术学徒生成对抗网络&#xff08;GAN&#xff09;&#xff1a;画家与评审的双重角色…

MySQL 逗号分隔查询--find_in_set()函数

业务场景&#xff1a; 在使用MySQL的时候&#xff0c;可能的某个字段存储的是一个英文逗号分割的字符串&#xff08;这里我们不讨论表设计的合理性&#xff09;&#xff0c;如图所示&#xff1a; 我们在查询的时候需要匹配逗号分割中的某个字符串&#xff0c;该怎么查询呢&am…

CRM 系统:管理工作流程的最佳利器全面解析

一个好的CRM解决方案能够使您业务保持活力——也就是管理客户。这意味着CRM系统提供了包括流程自动化、联系人管理、多渠道管理、数据分析等一系列工具。可以说&#xff0c;CRM是企业管理工作流程的最佳工具之一。 现在&#xff0c;市场上有上万种不同类型的CRM解决方案&#…

vue中的ref/reactive区别及原理

Vue中的ref和reactive是两种不同的数据响应式管理方式。 ref是Vue 3中新加入的特性&#xff0c;它可以将一个普通的JavaScript对象转换为响应式对象。通过ref创建的响应式对象在访问和修改时会自动触发重新渲染。ref返回的是一个包含value属性的对象&#xff0c;访问或修改数据…