代码随想录算法训练营第四十六天|139.单词拆分、关于多重背包,你该了解这些!、背包问题总结篇!

news2024/11/29 20:41:58

文章目录

  • 一、139.单词拆分
  • 二、关于多重背包,你该了解这些!
  • 三、背包问题总结篇!
  • 总结


一、139.单词拆分

    public boolean wordBreak(String s, List<String> wordDict) {
        //完全背包问题,因为可以重复,背包正序排列
        //排列问题,先遍历背包,再遍历物品
        boolean[] dp = new boolean[s.length()+1];//容量为j的背包,是否可以拼接出来
        Arrays.fill(dp,false);
        dp[0] = true;
        for(int j=0;j<=s.length();j++){//遍历背包
            for(int i=0;i<wordDict.size();i++){//遍历物品
                if(j>= wordDict.get(i).length()&&dp[j - wordDict.get(i).length()]&& s.substring(j - wordDict.get(i).length(), j).equals(wordDict.get(i))){
                    dp[j]=true;       
                }
                // if (j >= wordDict.get(i).length() && dp[j - wordDict.get(i).length()] && s.substring(j - wordDict.get(i).length(), j).equals(wordDict.get(i))) {
                //     dp[j] = true;
                //     // break;
                // }
                
            }
        }
        return dp[s.length()];
        
    }

11分钟

二、关于多重背包,你该了解这些!

  • 自己看到题目的第一想法

  • 看完题解之后的想法

  • 自己实现过程中遇到的问题总结

46分钟

三、背包问题总结篇!

  1. 问能否能装满背包(或者最多装多少):dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]); ,对应题目如下:
    动态规划:416.分割等和子集(opens new window)
    动态规划:1049.最后一块石头的重量 II(opens new window)

  2. 问装满背包有几种方法:dp[j] += dp[j - nums[i]] ,对应题目如下:
    动态规划:494.目标和(opens new window)
    动态规划:518. 零钱兑换 II(opens new window)
    动态规划:377.组合总和Ⅳ(opens new window)
    动态规划:70. 爬楼梯进阶版(完全背包)(opens new window)

  3. 问背包装满最大价值:dp[j] = max(dp[j], dp[j - weight[i]] + value[i]); ,对应题目如下:
    动态规划:474.一和零(opens new window)

  4. 问装满背包所有物品的最小个数:dp[j] = min(dp[j - coins[i]] + 1, dp[j]); ,对应题目如下:
    动态规划:322.零钱兑换(opens new window)
    动态规划:279.完全平方数

  5. 如果求组合数就是外层for循环遍历物品,内层for遍历背包。
    如果求排列数就是外层for遍历背包,内层for循环遍历物品。
    在这里插入图片描述

总结

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

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

相关文章

chatgpt赋能python:Python匹配符号:快速有效地处理文本

Python匹配符号&#xff1a;快速有效地处理文本 什么是Python匹配符号&#xff1f; Python是一种灵活的编程语言&#xff0c;可以轻松地处理文本数据。在Python中&#xff0c;使用正则表达式来匹配符号。正则表达式是一种模式匹配工具&#xff0c;可以帮助用户找到特定的文本…

day 44 完全背包:518. 零钱兑换 II;377. 组合总和 Ⅳ

完全背包&#xff1a;物品可以使用多次 完全背包1. 与01背包区别 518. 零钱兑换 II1. dp数组以及下标名义2. 递归公式3. dp数组如何初始化4. 遍历顺序:不能颠倒两个for循环顺序5. 代码 377. 组合总和 Ⅳ:与零钱兑换类似&#xff0c;但是是求组合数1. dp数组以及下标名义2. 递归…

ASP.NET Core MVC 从入门到精通之自动映射(二)

随着技术的发展&#xff0c;ASP.NET Core MVC也推出了好长时间&#xff0c;经过不断的版本更新迭代&#xff0c;已经越来越完善&#xff0c;本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容&#xff0c;适用于初学者&#xff0c;在校毕业生&#xff0c…

034:Mapbox GL双屏地图联动

第034个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中实现双屏联动功能。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共110行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:https://…

Redis入门到实战笔记-数据类型

这里写目录标题 SQL与NoSQL关系型数据库&#xff1a;查询方式&#xff1a; 非关联数据库&#xff1a;查询方式&#xff1a; 总结 认识RedisRedis安装远程连接防火墙设置关闭防火墙开启防火墙检查防火墙状态开放指定端口 Redis数据类型和常见命令keysdelEXISTexpired&#xff0c…

day 41:343. 整数拆分;96.不同的二叉搜索树

动态规划 [343. 整数拆分](https://leetcode.cn/problems/integer-break/description/)1. dp数组以及下标名义2. 递归公式3. dp数组如何初始化4. 遍历顺序:遍历i是从前向后遍历&#xff0c;先有dp[i - j]再有dp[i]5. 代码 96.不同的二叉搜索树1. dp数组以及下标名义2. 递归公式…

计组 第二章错题 2.3 浮点数的表示与运算

4.变形补码就是采用双符号位 &#xff0c;不能避免溢出&#xff0c;只是更方便判断是否溢出 5. 9.B 2047:阶码全1表示正无穷 -&#xff08;11-2*(-52&#xff09;) 10.没有想到用移位 10100是20 12.移码看做无符号数 B、无论有无规格化 都要对阶&#xff0c;并没有方便浮…

【Java 多态】面向对象编程の重要概念,多态是什么,附带小案例

博主&#xff1a;_LJaXi Or 東方幻想郷 专栏&#xff1a; Java | 从入门到入坟 专属&#xff1a;六月一日 | 儿童节 Java 多态 多态 &#x1f9a0;在继承中实现多态 &#x1f3a1;在接口中实现多态 &#x1f9ff; 多态 &#x1f9a0; Java的多态是指同一个方法在不同的对象上有…

深度剖析数据在内存中的存储(C语言)

[目录] 目录 #数据类型详细介绍 数据类型介绍 整型家族归类&#xff1a; 浮点型家族归类: 构造类型&#xff1a; 指针类型: 空类型: #整型在内存中的存储 #大小端字节序存储 #浮点数在内存中的存储 为什么会这样&#xff1f; 一&#xff1a;不是全0也不是全1 二&…

皮卡丘File Inclusion

1.File Inclusion(文件包含漏洞)概述 文件包含&#xff0c;是一个功能。在各种开发语言中都提供了内置的文件包含函数&#xff0c;其可以使开发人员在一个代码文件中直接包含&#xff08;引入&#xff09;另外一个代码文件。 比如 在PHP中&#xff0c;提供了&#xff1a; incl…

day 42:01背包问题;416. 分割等和子集

动态规划:01背包问题 01背包问题基础1. 暴力解法2. 二维dp数组01背包1.确定dp数组以及下标的含义2.递推公式3.dp数组如何初始化4.遍历顺序5.测试代码 01背包理论基础&#xff08;滚动数组&#xff09;&#xff1a;将二维dp转换为一维dp1. dp数组以及下标名义2. 递归公式3. dp数…

day 45:爬楼梯进阶版;322. 零钱兑换;279. 完全平方数

爬楼梯进阶版 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 一步一个台阶&#xff0c;两个台阶&#xff0c;三个台阶&#xff0c;…&#xff0c;直到 m个台阶。问有多少种不同的方法可以爬到楼顶呢&#xff1f; 1. dp数组以及下标名义 dp[j]&#xff1a;爬到…

《商用密码应用与安全性评估》第四章密码应用安全性评估实施要点4.5密码应用安全性评估测评工具

目录 测评工具使用和管理要求 测评工具体系 通用测评工具 专用测评工具 典型测评工具概述 测评工具使用和管理要求 测评过程中使用的专用测评工具应通过国家密码管理局的审批或者经检测认证合格。为确保工具测试结果的准确可信&#xff0c;测评机构应确认使用的专用工具是最…

chatgpt赋能python:Python删除离群值

Python 删除离群值 介绍 离群值是指在数据集中远离其他观测值的数据点&#xff0c;可以是数据输入或数据损坏产生的错误。它们通常会对分析造成影响&#xff0c;因此需要处理它们。 Python 是一种流行的编程语言&#xff0c;可以用于处理数据集和删除离群值。本文将介绍 Pyt…

天然气网络潮流计算模型研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

# Anolis OS8 磁盘扩容

Anolis OS8 磁盘扩容 最近学习的时候&#xff0c;使用Vmware安装了AnolisOS8进行测试&#xff0c;随着学习的深入&#xff0c;组件安装越来越多&#xff0c;磁盘不够用了&#xff0c;但是安装的组件又太多&#xff0c;重新装个虚拟机又得重新装各种组件。所以决定对磁盘进行扩…

Payroll工资单中英文对照明细

不知道大家的工资单是中文的还是英文的&#xff0c;如果是英文的&#xff0c;刚开始看有些看不懂&#xff08;我就是&#xff09;&#xff0c;那么可以在这里找到对应的翻译。如果中文的&#xff0c;而你又想知道对应英文怎么写的话&#xff0c;也欢迎查阅以下表格。ps.个人所得…

网络协议分析(结合版)

初始协议 1.什么是协议&#xff1f; 数据从源地点传输到目的地点&#xff0c;网络上所有设备需要“讲”相同的“语言”。 描述网络通信中如何规范使用“语言” 的一组规则就是协议。 2.数据通信协议: 决定数据的格式和数据的传输的一组规则或者一组惯例 协议分层 ARP协议 …

chatgpt赋能python:Python升降序排列数字

Python升降序排列数字 在Python编程中&#xff0c;排序是一个非常常见并且重要的操作。Python提供了多种排序算法以满足不同的需求。 排序算法 Python中内置的排序算法有两种&#xff1a;Timsort和Quicksort。其中Timsort是一种混合排序算法&#xff0c;结合了插入排序和归并…

使用OpenAI创建对话式聊天机器人

引言 在当今的技术世界中&#xff0c;人工智能&#xff08;AI&#xff09;的发展迅猛&#xff0c;为我们带来了许多令人兴奋的创新。其中&#xff0c;自然语言处理&#xff08;NLP&#xff09;领域的进展使得开发对话式聊天机器人成为可能。OpenAI是一家领先的人工智能研究实验…