当前位置: 首页 > article >正文

231128 刷题日报

值班+刷题的第二天,早上地铁上看了一道题,以为很简单

LCR 019. 验证回文串 II

我的思路是引入计数器+左右指针,然而

Leetcode老哥提醒了我:

你看看这个字符串“lcuxxucul”,你的默认优先删除左边,但是删除左边是false,如果删除右边就是true

所以这题还是要dp实现的

另外整理下DP

0-1背包子集背包完全背包
如果限定每件物品最多只能选取 1次(即 0 或 1次),则问题称为 0-1背包问题如果每件物品最多可以选取无限次,则问题称为完全背包问题
dp数组定义对于前i个物品,当前背包容量是w,这种情况下可以装的最大价值是dp[i][w]dp[i][j] = x表示,对于前i个物品,当前背包容量是j时,若x为true,则说明背包可以恰好装满;若x为false,则说明不能恰好把背包装满。

dp[i][j]定义如下;

只使用前i物品,装满背包容量j,有dp[i][j]个方法

从前 i种硬币中组成金额 j所需最少的硬币数量。

状态转移

:dp[i - 1][w - wt[i-1]] + val[i-1]

不选:dp[i - 1][w]

推导式

dp[i][w] = max(dp[i - 1][w - wt[i-1]] + val[i-1], dp[i - 1][w]); 

dp[i][j] = dp[i - 1][j] || dp[i - 1][j-nums[i-1]]; 

dp[i][j] = dp[i - 1][j]

+ dp[i][j-coins[i-1]];

base case

dp[0][..] = 0

dp[..][0] = 0

没有物品或者没有背包空间时,最大价值是0

dp[0][..] = true

dp[..][0] = false

没有物品选择时,肯定没办法装满背包;

背包没有空间时,相当于背包满了。

dp[0][..] = 0

dp[..][0] = 1

如果不使用任何硬币面值,无法凑出金额;

如果目标金额为0,那么无为而治也是一种凑法。

应用

494. 目标和

416. 分割等和子集

474. 一和零

1049. 最后一块石头的重量 II

322. 零钱兑换

剑指 Offer II 103. 最少的硬币数目

518. 零钱兑换 II

279. 完全平方数

求最优解的背包问题中,有的题目要求恰好装满背包时的最优解,有的题目则要求不超过背包容量时的最优解。一种区别这两种问法的实现方法是在状态初始化的时候有所不同

两种问法的实现方法是在状态初始化的时候有所不同。
初始化的 dpdpdp 数组事实上就是在背包中没有放入任何物品时的合法状态:

如果要求恰好装满背包,那么在初始化时 dp[i][0]=0,其它 dp[i][1,2,...,∗] 均设为 −∞。

这是因为此时只有容量为 0的背包可能被价值为 0 的 nothing “恰好装满”,而其它容量的背包均没有合法的解,属于未定义的状态。


如果只是要求不超过背包容量而使得背包中的物品价值尽量大,初始化时应将 dp[∗][∗]全部设为 0。

这是因为对应于任何一个背包,都有一个合法解为 “什么都不装”,价值为 000。


http://www.kler.cn/a/149047.html

相关文章:

  • SpringCloud学习笔记
  • Bugku CTF_Web——文件上传
  • MybatisPlus入门(十)MybatisPlus-逻辑删除和多记录操作
  • 《C++在金融领域的技术革命:高效、安全与创新的融合》
  • 【OceanBase 诊断调优】—— ocp上针对OB租户CPU消耗计算逻辑
  • 【云计算解决方案面试整理】1-2云计算基础概念及云计算技术原理
  • 【精选】Spring整合MyBatis,Junit 及Spring 事务Spring AOP面向切面详解
  • Qt问题 QString 和 void* 相互转化
  • Kafka 保证消息消费全局顺序性
  • Flask教程入门
  • Android 13.0 修改系统默认设备类型的平板电脑类型为设备类型
  • MySQL索引优化实战一
  • 万户协同办公平台ezoffice SendFileCheckTemplateEdit.jsp接口存在SQL注入漏洞 附POC
  • SpringBoot项目整合Redis,Rabbitmq发送、消费、存储邮件
  • 代码随想录算法训练营 ---第四十九天
  • 在Visual Studio Code中安装加速TypeScript程序开发的插件
  • Git工作流和Commit规范
  • 12:kotlin类和对象 -- 继承
  • C语言第三十六弹--实现转移表的多种方法
  • redis基本数据结构
  • FFA 2023|字节跳动 7 项议题入选
  • 计算机基础知识57
  • Ubuntu 上使能 SELinux
  • 王者小游戏
  • 【好用的个人工具】在Docker环境下部署Simple mind map思维导图工具
  • 云原生系列Go语言篇-泛型Part 2