LeeCode Practice Journal | Day37_DP05

news2024/9/24 21:23:30

完全背包

有N件物品和一个容量为W的背包,第 i 件物品的重量是weight[ i ],价值为value[ i ],每件物品都有无限个,求解使用背包物品价值总和达到最大的装包方案  

二维
static int CompleteKnapsack2D(int[] weights, int[] values, int W)
{
    int n = weights.Length;
    int[,] dp = new int[n + 1, W + 1];

    // 遍历每个物品
    for (int i = 1; i <= n; i++)
    {
        for (int j = 0; j <= W; j++)
        {
            // 如果不使用当前物品
            dp[i, j] = dp[i - 1, j];
            // 如果使用当前物品
            if (j >= weights[i - 1])
            {
                dp[i, j] = Math.Max(dp[i, j], dp[i, j - weights[i - 1]] + values[i - 1]);
            }
        }
    }

    return dp[n, W];
}
一维
static int CompleteKnapsack1D(int[] weights, int[] values, int W)
{
    int n = weights.Length;
    int[] dp = new int[W + 1];

    // 遍历所有的物品
    for (int i = 0; i < n; i++)
    {
        // 遍历背包容量从小到大
        for (int j = weights[i]; j <= W; j++)
        {
            // 更新 dp 数组
            dp[j] = Math.Max(dp[j], dp[j - weights[i]] + values[i]);
        }
    }

    return dp[W];
}
summary

518. 零钱兑换Ⅱ

题目:518. 零钱兑换 II - 力扣(LeetCode)
题解:代码随想录 (programmercarl.com)
比较简单

solution
public class Solution {
    public int Change(int amount, int[] coins) {
        int[] dp = new int[amount + 1];

        dp[0] = 1;
        for(int i = 0; i < coins.Length; i ++)
        {
            for(int j = coins[i]; j <= amount; j ++)
            {
                dp[j] = dp[j] + dp[j - coins[i]];
            }
        }
        return dp[amount];
    }
}
summary

注意dp[0]需要初始化为1

377. 组合总和Ⅳ

题目:377. 组合总和 Ⅳ - 力扣(LeetCode)
题解:代码随想录 (programmercarl.com)
想不通,明天再想

solution
public class Solution {
    public int CombinationSum4(int[] nums, int target) {
        // 创建 dp 数组,大小为 target + 1
        int[] dp = new int[target + 1];
        dp[0] = 1; // 组成 0 的组合数量为 1(空组合)

        // 遍历所有目标数值
        for (int i = 1; i <= target; i++)
        {
            // 遍历所有候选数字
            foreach (int num in nums)
            {
                if (i >= num)
                {
                    // 更新 dp[i] 的值
                    dp[i] += dp[i - num];
                }
            }
        }

        // 返回组成 target 的组合数量
        return dp[target];
    }
}
summary

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

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

相关文章

第三篇远程连接工具介绍及使用

目录 一、远程连接工具的介绍 1、作用 2、常用的远程连接工具 1) XShell 2) FinalShell 3) PuTTY 4) SecureCRT 5) MobaXterm 6) WinSCP 7) NxShell 3、Xshell 安装使用 1&#xff09;Xshell 安装 2&#xff09;Xshell 使用​编辑 4、Finalshell 安装使用 1&…

C++初学者指南-5.标准库(第二部分)--排序序列操作

C初学者指南-5.标准库(第二部分)–排序序列操作 文章目录 C初学者指南-5.标准库(第二部分)--排序序列操作二分查找binary_searchlower_boundupper_boundequal_rangeincludes 合并mergeinplace_merge 设置操作set_unionset_intersectionset_differenceset_symmetric_difference …

最“抠门”千亿儿媳,一件衣服穿五年!

文&#xff5c;琥珀食酒社 作者 | 积溪 我真是震惊了&#xff01; 刚刚刷奥运会 看解说员介绍称呼 说跳水名将郭晶晶和他的先生 我才知道霍家对郭晶晶的夸奖 绝非随口一说 她跟很多嫁入豪门的人 不一样 因为太“抠门”了 身为霍家儿媳妇 身价千亿的郭晶晶 一个头绳…

C++STL~~string

文章目录 一、string类的发展历史二、string的使用三、string的练习四、总结 一、string类的发展历史 在C 的早期版本中&#xff0c;处理字符串主要依赖于 C 风格的字符数组。但这种方式存在诸多不便&#xff0c;如手动管理内存、容易出现缓冲区溢出等问题。随着 C 标准的不断…

使用Linux实现FTP云盘1

关于FTP服务器 FTP&#xff08;文件传输协议&#xff09;服务器是在互联网上提供文件存储和访问服务的计算机&#xff0c;它们依照FTP 协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。 程序运行&#xff0c;服务端不断接收客户端指令&#xff0c;服务 端可同时处…

一文概叙自制舵机云台

本文主要涉及选择合适的舵机、设计云台结构、编写控制代码以及组装调试等步骤。以下是一个详细的制作流程&#xff1a; 一、材料准备 1、舵机&#xff1a; 通常需要至少两个舵机&#xff0c;一个用于控制云台的左右旋转&#xff0c;另一个用于控制云台的上下倾斜。先以简单的…

渲染引擎实践 - UnrealEngine引擎 GLContext 创建过程

一:概述: 本文分析下 UnrealEngine 启动过程中创建多少个 OpenGL Context,以及这些 Context 的作用。 二:临时Context 1. PreInit -> PreInitPreStartupScreen -> PreloadResolutionSettings, 用于检查图形窗口分辨率 2. PreInit -> PreInitPreStartupScreen -&…

高效清理优化工具 Sonoma Cache Cleaner mac 19.0.6注册激活版

Sonoma Cache Cleaner 是一款专为 Mac 系统设计的强大清理优化工具。它能够深度扫描系统&#xff0c;清理各类缓存文件&#xff0c;释放宝贵的存储空间。不仅如此&#xff0c;还能优化系统性能&#xff0c;让您的 Mac 运行更加流畅快捷。无论是系统日志、临时文件还是浏览器缓存…

ArcGIS基础:以分数形式进行标注字段

分数形式标注在项目或者工作中可能会用到 基于VBScript进行分式标注的通用形式为&#xff1a; "<und>"&""& 分子字段&""&"</und>"&vbNewLine& 分母字段按下述顺序进行操作标注 "<und…

VScode:前端项目中导出和导入插件

# 终端运行&#xff1a;导出扩展插件到指定路径&#xff08;txt&#xff09; code --list-extensions > C:\Users\UserName\Documents\extensions.txt # 终端运行&#xff1a;导入指定路径&#xff08;txt&#xff09;的扩展插件 Get-Content C:\Users\UserName\Documen…

【独家原创区间概率预测】CNN-BiLSTM-SEAttention-ABKDE多变量时序预测-区间预测

【独家原创区间概率预测】CNN-BiLSTM-SEAttention-ABKDE多变量时序预测-区间预测 基于卷积神经网络(CNN)结合双向长短期记忆网络(BiLSTM)结合SE注意力机制并结合自适应带宽核函数密度估计的多变量时序预测【点预测概率预测核密度估计】 程序已调试好&#xff0c;无需更改代码&a…

Leetcode每日刷题之面试题01.01.判断字符是否唯一

在学习编程语言的过程中相信大部分同学刚开始接触的循环语句都是 for 循环&#xff0c;今天我将介绍一个比较简洁的循环语句&#xff0c;可以帮助我们减少些许的代码量&#xff0c;也更加快捷&#xff0c;那就是范围 for 在我之前的博文中也有所介绍 详情点击&#xff1a;面向对…

React-Lines-Ellipsis:插件处理多行文本截断

实现自适应的多行文本截断并添加省略号。该项目依赖于CSS Flexbox布局&#xff0c;确保在各种屏幕尺寸和设备上都能正常工作&#xff0c;无需手动计算高度 安装 法1&#xff1a;使用插件react-lines-ellipsis &#xff08;适用范围&#xff1a;使用react的项目&#xff09; npm…

JarEditor:一款直接编辑修改 jar 包内文件IDEA 插件【送源码】

作为一名 Java 程序员&#xff0c;在维护一些古老的程序时&#xff0c;可能会遇到这种情况&#xff1a;项目依赖的 jar 包过于久远&#xff0c;已经没有源码了&#xff0c;但是有不得不修改的 bug 要处理。这时候就得想办法反编译 jar 包进行修改&#xff0c;并且重新打包&…

LeetCode 热题 HOT 100 (019/100)【宇宙最简单版】

【链表】No. 0142 环形链表 II【中等】&#x1f449;力扣对应题目指路 希望对你有帮助呀&#xff01;&#xff01;&#x1f49c;&#x1f49c; 如有更好理解的思路&#xff0c;欢迎大家留言补充 ~ 一起加油叭 &#x1f4a6; 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&#…

Redis数据失效监听

一、配置Redis开启 打开conf/redis.conf 文件&#xff0c;添加参数&#xff1a;notify-keyspace-events Ex 二、验证配置 步骤一&#xff1a;进入redis客户端&#xff1a;redis-cli步骤二&#xff1a;执行 CONFIG GET notify-keyspace-events &#xff0c;如果有返回值证明配…

初始化列表的基本介绍

为了树立初始化列表&#xff0c;我们先引进有参构造函数来理解 在上图的有参构造函数中我们可以将其转换为初始化列表&#xff0c;初始化列表有两种方式&#xff0c;一种是有参一种是无参&#xff0c;一会我会分别举例子&#xff0c;其语法为类名():属性&#xff08;值&#xf…

ffmpeg: 将flv格式的视频推流时报错: Failed to update header with correct duration

问题描述 我在将flv格式的视频推给rtmp服务器的时候&#xff0c;报错Failed to update header with correct duration&#xff0c;截图如下&#xff1a; 我的推流命令是 ffmpeg -stream_loop -1 -re -i wait-voice.flv -c:a copy -c:v copy -f flv rtmp://192.18.1.29:1935/…

C++入门知识点总结(下篇·初学必看)

前言&#xff1a;Hello大家好&#x1f618;&#xff0c;我是心跳sy&#xff0c;这篇文章将介绍下篇知识点内容&#xff0c;本系列文章将会更新关于C的全部初阶以及进阶的知识点&#xff0c;喜欢的小伙伴点个关注不迷路哦~我们一起来看看吧~ 目录 一、引用 &#x1f4ab; 1.1…

SAP 如何通过程序创建一个请求

一&#xff1a;首先我们需要知道SAP的资源类型 PGMID &#xff1a;程序ID OBJECT &#xff1a;对象类型 OBJ_NAME&#xff1a;对象名称 SY-REPID 我们可以通过SE09/SE10来创建一个请求号也能看的出来 也可以通过SE03来查找 请求号相关的数据都在E07*的表里这边…