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

算法笔记|Day33动态规划VI

算法笔记|Day33动态规划VI

  • ☆☆☆☆☆leetcode 322. 零钱兑换
    • 题目分析
    • 代码
  • ☆☆☆☆☆leetcode 279.完全平方数
    • 题目分析
    • 代码
  • ☆☆☆☆☆leetcode 139.单词拆分
    • 题目分析
    • 代码

☆☆☆☆☆leetcode 322. 零钱兑换

题目链接:leetcode 322. 零钱兑换

题目分析

1.dp数组含义:dp[j]表示凑足总额为j所需钱币的最少个数;
2.递推公式:dp[j]=Math.min(dp[j],dp[j-coins[i]]+1)(分别考虑取第i个钱币与不取第i个钱币得到的钱币个数取最小值);
3.初始化:dp[0]=0,其余dp[]=Integer.MAX_VALUE(凑足总额为j所需钱币的最少个数为0,为了不影响后续计算应赋其他值为最大值Integer.MAX_VALUE);
4.遍历顺序:顺序不影响结果(考虑排列或组合均可),先遍历货币或者背包都可以,背包一定是要正序遍历。

代码

class Solution {public int coinChange(int[] coins, int amount) {int dp[]=new int[amount+1];for(int i=1;i<dp.length;i++)dp[i]=Integer.MAX_VALUE;for(int i=0;i<coins.length;i++){for(int j=coins[i];j<=amount;j++){if(dp[j-coins[i]]!=Integer.MAX_VALUE)dp[j]=Math.min(dp[j],dp[j-coins[i]]+1);}}return dp[amount]==Integer.MAX_VALUE?-1:dp[amount];}
}

☆☆☆☆☆leetcode 279.完全平方数

题目链接:leetcode 279.完全平方数

题目分析

1.dp数组含义:dp[j]表示和为j的完全平方数的最少数量;
2.递推公式:dp[j]=Math.min(dp[j-i*i]+1,dp[j])(分别考虑取i的平方与不取i的平方得到的总个数取最小值);
3.初始化:dp[0]=0,其余dp[]=Integer.MAX_VALUE(为了不影响后续计算应赋dp[0]=0,其他值为最大值Integer.MAX_VALUE);
4.遍历顺序:顺序不影响结果(考虑排列或组合均可),先遍历货币或者背包都可以,背包一定是要正序遍历。

代码

class Solution {public int numSquares(int n) {int dp[]=new int[n+1];for(int i=1;i<=n;i++)dp[i]=Integer.MAX_VALUE;for(int i=1;i<=n;i++){for(int j=i*i;j<=n;j++){dp[j]=Math.min(dp[j-i*i]+1,dp[j]);}}return dp[n];}
}

☆☆☆☆☆leetcode 139.单词拆分

题目链接:leetcode 139.单词拆分

题目分析

1.dp数组含义:dp[j]表示字符串长度为j时能否拆分为一个或多个在字典中出现的单词;
2.递推公式:if(set.contains(s.substring(j,i))&&dp[j])dp[i]=true(如果[j,i]区间的子串出现在字典里且dp[j]是true,则dp[i]=true);
3.初始化:dp[0]=true,其余dp[]=false(为了不影响后续计算应赋dp[0]=true,其他值为false);
4.遍历顺序:顺序不影响结果(考虑排列或组合均可),先遍历字符串或者字典都可以。

代码

class Solution {public boolean wordBreak(String s, List<String> wordDict) {HashSet<String> set=new HashSet<>(wordDict);boolean dp[]=new boolean[s.length()+1];dp[0]=true;for(int i=1;i<=s.length();i++){for(int j=0;j<i;j++){if(set.contains(s.substring(j,i))&&dp[j])dp[i]=true;}}return dp[s.length()];}
}

http://www.mrgr.cn/news/11860.html

相关文章:

  • 八、DMA直接存储器存取
  • poi word 添加水印
  • ChatGPT 3.5/4.0 新手使用手册
  • 华为 2024 届校园招聘-硬件通⽤/单板开发——第一套(部分题目分享,完整版带答案,共十套)
  • JAVA var类型详解
  • 运维学习————Docker自制镜像并上传至阿里云以及Docker Compose的使用
  • 深入剖析ASP.NET Core中的身份验证与授权:构建安全可靠的Web应用
  • 云计算day33
  • Oracle字符串聚合函数LISTAGG
  • Golang | Leetcode Golang题解之第375题猜数字大小II
  • 鸿蒙内核源码分析(用户态锁篇) | 如何使用快锁Futex(上)
  • 1+X 职业技能等级证书面向哪些人群介绍
  • 深度学习基础(Datawhale X 李宏毅苹果书AI夏令营)
  • Code Llama: Open Foundation Models for Code论文阅读
  • 【C#】【EXCEL】BumblebeeComponentsAnalysisGH_Ex_Ana_CondScale.cs
  • HTML对信息化大屏的像素适应解决方案autofit.js
  • Linux网络:TCP UDP socket
  • vue2.0纯前端预览附件方法汇总
  • Linux 软件编程多路复用tcp
  • 解释 RESTful API,以及如何使用它构建 web 应用程序