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

【代码随想录算法训练Day44】LeetCode 322.零钱兑换、LeetCode 279.完全平方数、LeetCode139.单词拆分

Day44 动态规划第六天

LeetCode 322.零钱兑换

dp数组的含义:装满容量为j的背包需要的最少物品数为dp[j]
递推公式:dp[j]=min(dp[j-coins[i]]+1,dp[j])
初始化:dp[0]=0,dp[j]=INT_MAX
遍历顺序:个数问题与遍历顺序无关,都可以

class Solution {
public:int coinChange(vector<int>& coins, int amount) {vector<int> dp(amount+1,INT_MAX);dp[0]=0;for(int i=0;i<coins.size();i++){for(int j=coins[i];j<=amount;j++){if(dp[j-coins[i]]!=INT_MAX){dp[j]=min(dp[j-coins[i]]+1,dp[j]);}}}if(dp[amount]==INT_MAX) return -1;return dp[amount];}
};

LeetCode 279.完全平方数

与零钱兑换几乎一致,区别就只有物品变成了完全平方数(ixi)了。

class Solution {
public:int numSquares(int n) {vector<int> dp(n+1,INT_MAX);dp[0]=0;for(int i=0;i<=n;i++){for(int j=1;j*j<=i;j++){dp[i]=min(dp[i-j*j]+1,dp[i]);}}return dp[n];}
};

LeetCode139.单词拆分

dp数组含义:如果长度为i的字符串能被字典里的单词表示,dp[i]==true。
递推公式:if([j,i]是字典里的单词 dp[j]==true) dp[i]=true;
初始化:dp[0]=true,dp[i]=false
遍历顺序:先背包,后物品,从后往前

class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string> wordSet(wordDict.begin(),wordDict.end());vector<bool> dp(s.size()+1,false);dp[0]=true;for(int i=1;i<=s.size();i++){for(int j=0;j<i;j++){string word=s.substr(j,i-j);if(wordSet.find(word)!=wordSet.end() && dp[j]){dp[i]=true;}}}return dp[s.size()];}
};

强化完全背包!

http://www.lryc.cn/news/378152.html

相关文章:

  • ChatGLM2-6B 部署
  • 武汉工程大学24计算机考研数据,有学硕招收调剂,而专硕不招收调剂!
  • python爬虫之selenium自动化操作
  • 【漏洞复现】红帆iOffice.net wssRtSyn接口处存在SQL注入
  • 云计算【第一阶段(17)】账号和权限管理
  • 环境配置02:CUDA安装
  • Ranger配置图片及json文件预览
  • C语言 | Leetcode C语言题解之第169题多数元素
  • 常说的云VR是什么意思?与传统vr的区别
  • 华为云CodeArts API:API管理一体化平台 5月新特性上线啦!
  • ubuntu16因swap分区uuid错误启动慢排查
  • [保姆级]uniapp自定义导航栏
  • Java 桥接模式(Bridge Pattern)是设计模式中的一种结构型设计模式,桥接模式的核心思想是将抽象与实现解耦
  • 入门Ansible常用模块
  • 全能AI客户端:ChatGPT Web Midjourney Proxy,AI绘画+GPT4o对话
  • Java基础 - 练习(四)打印九九乘法表
  • 软件测试——稳定性测试:adb Monkey
  • 前端vue实战项目结构、常用编辑器vs code 配置
  • Linux系统性能优化实战经验
  • 2024广东省职业技能大赛云计算赛项实战——Ansible部署Zabbix
  • Linux—— ansible循环
  • RabbitMQ 开发指南
  • ElasticSearch学习笔记(二)文档操作、RestHighLevelClient的使用
  • python离线安装第三方库、及其依赖库(单个安装,非批量移植)
  • 昨天发的 npm 包,却因为 registry 同步问题无法安装使用
  • Redis 数据恢复及持久化策略分析
  • vscode 快捷键侧边栏
  • FreeRTOS:1、任务通知vTaskNotifyGiveFromISR保证实时性
  • 监督学习:从数据中学习预测模型的艺术与科学
  • 深入理解Java虚拟机(JVM)中的垃圾回收器