首页 > 其他分享 >代码随想录第四十五天 | 动态规划

代码随想录第四十五天 | 动态规划

时间:2022-11-26 16:22:07浏览次数:67  
标签:四十五天 背包 int 代码 coins 随想录 new dp

今天是第四十五天,继续动态规划

 

70. 爬楼梯 (进阶)

class Solution {
    public int climbStairs(int n) {
        
        int[] dp = new int[n+1];
        dp[0] = 1;
        for(int i = 0; i<=n; i++){
            for(int j = 1; j<= 2; j++){
                int temp = i - j;
                if(temp < 0){
                    continue;
                }
                dp[i] += dp[temp];
            }
        }
        return dp[n];
        
    }
}

可以转化成完全背包问题,外圈loop是背包,里面的物品

322. 零钱兑换 

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

也是一道完全背包问题,但此题不受硬币顺序影响,因此内外两层for loop无论先后背包物品都是可以的

 279.完全平方数 

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

先物品再背包

 

今天是完全背包,明天继续!

标签:四十五天,背包,int,代码,coins,随想录,new,dp
From: https://www.cnblogs.com/catSoda/p/16927651.html

相关文章

  • wordpress代码实现相关文章的几种方法
    我们在制作wordpress主题的时候经常会为文章模板添加一些相关文章的功能丰富,他们有的时候出现在侧栏,有的时候出现在文章的底部相关文章这块,当然WordPress相关文章的插件也......
  • 自动代码生成器类
    packagecode.auto;importcom.baomidou.mybatisplus.core.toolkit.StringPool;importcom.baomidou.mybatisplus.generator.AutoGenerator;importcom.baomidou.myba......
  • 【无人机通信优化】基于粒子群算法的多跳无线网络部署优化附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进。......
  • PHP代码审计
    前言官方文档:php.netphp官方文档是非常详情,好用的,在遇到不清楚作用的函数时可以进行查询白盒测试做代码审计最主要的知识是要去了解一个漏洞应该有哪些防御方式,因为大部分的......
  • 【图像分割】基于神经气体网络 (NGN)实现图像分割附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进。......
  • 改进代码审查的10种方法
    改进代码审查的10种方法    所有这些建议(除了第一条)都假定你的代码是作为PullRequest工作流程的一部分来审查的,比如GitHub流程或基于树干的PR开发。还有其他的代码审......
  • shell代码风格规范【转】
    转发自:编写Shell脚本的最佳实践开头有“蛇棒”所谓shebang其实就是在很多脚本的第一行出现的以"#!"开头的注释,他指明了当我们没有指定解释器的时候默认的解释器,一般可......
  • 如何将本地仓库的代码上传到github远程仓库
    首先将创建的项目克隆到本地,然后在终端中进入该目录初始化gitgitinit将修改添加到缓存区gitadd.将缓存区的文件提交到本地仓库gitcommit-m提交将本地仓库......
  • 搭建Gogs源代码管理
    一、安装mysqldockerrun-d--restart=always--namemysql-service-v/mysql/data:/var/lib/mysql-p3306:3306-eTZ=Asia/Shanghai-eMYSQL_ROOT_PASSWORD=123456......
  • 分位数回归损失函数代码实现解析
    目录1.绪论2.分位数回归3.分位数回归损失函数4.\((\gamma-1)\)的放入5.程序代码表达1.绪论对于分位数回归损失函数,最近看到了两种不同的实现。这种实现和Bing......