DAY38,39,41|动态规划01

文章目录

      • 509.斐波那契数
      • 70.爬楼梯
      • 746.使用最小花费爬楼梯
      • 62.不同路径
      • 63.不同路径II
      • 343.整数拆分

509.斐波那契数

代码:

class Solution {
    public int fib(int n) {
        if (n==0||n==1) {
            return n;
        }
        //1.确认dp数组和下标含义,一维dp数组,第i个数据为第i个数的的fn的值
        int[] dp = new int[n+1];
        //2.确认递推公式 fn = f(n-1)+f(n-2)
        //3.初始化dp数组,dp[0] = 0, dp[1] = 1
        dp[0] = 0;
        dp[1] = 1;
        for (int i = 2; i <= n; i++) {
            dp[i] = dp[i-1] + dp[i-2];
        }
        //4.确认遍历顺序
        //5.举例推导函数
        return dp[n];
    }
}

70.爬楼梯

class Solution {
    public int climbStairs(int n) {
        if (n==1) {
            return 1;
        }
        if (n==2) {
            return 2;
        }
        //确认dp数组的含义
        int[] dp = new int[n+1];
        //确认递推公式 dp[n] = dp[n-1] + dp[n-2];
        //确认dp数组的初始化
        dp[1] = 1;
        dp[2] = 2;
        //确认遍历顺序,开始遍历;
        for (int i = 3; i <= n; i++) {
            dp[i] = dp[i-1] + dp[i-2];
        }
        //举例推导函数
        return dp[n];
    }
}

746.使用最小花费爬楼梯

class Solution {
    public int minCostClimbingStairs(int[] cost) {
        //确认dp数组;dp[i] 表示跳到第i层楼梯并且再继续往上爬的最小支付费用
        int[] dp = new int[cost.length];
        //确认递推公式 dp[i] = Math.min(dp[i-1], dp[i-2]) + cost[i];
        //dp数组初始化
        dp[0] = cost[0];
        dp[1] = cost[1];
        if (cost.length == 2) {
            return Math.min(dp[0], dp[1]);
        }
        //确认遍历的顺序
        for (int i = 2; i < cost.length; i++) {
            dp[i] = Math.min(dp[i-1], dp[i-2]) + cost[i];
        }
        //举例推导函数
        return Math.min(dp[cost.length-1], dp[cost.length-2]);
    }
}

62.不同路径

class Solution {
    public int uniquePaths(int m, int n) {
        /**
         * 这一题思考了一下,如果想到达终点,那么就只能从终点的上一个位置或者从终点的左侧位置到达,
         * 那么可以推导出 dp[m][n] = dp[m-1][n] + dp[m][n-1];
         **/
        if (m == 1||n==1) {
            return 1;
        }
        //确定dp数组
        int[][] dp = new int[m+1][n+1];
        //确认递推公式,dp[m][n] = dp[m-1][n] + dp[m][n-1];
        //dp数组的初始化,先给第二列和第二行的数据都调整为1
        for (int i = 1; i < m+1; i++) {
            dp[i][1] = 1;
        }
        for (int i = 1; i < n+1; i++) {
            dp[1][i] = 1;
        }
        //确认dp数组的遍历顺序,从第二列第二行开始遍历整个表格,
        for (int i = 2; i < m+1; i++) {
            for (int j = 2; j < n+1; j++) {
                dp[i][j] = dp[i-1][j] + dp[i][j-1];
            }
        }
        //举例推导函数
        return dp[m][n];
    }
}

63.不同路径II

class Solution {
    public int uniquePathsWithObstacles(int[][] obstacleGrid) {
        int m = obstacleGrid.length;
        int n = obstacleGrid[0].length;
        if (obstacleGrid[0][0] == 1) {
            return 0;
        }
        if (obstacleGrid[m-1][n-1] == 1) {
            return 0;
        }
        if (m==1||n==1) {
            for (int i = 0; i < m; i++) {
                for (int j = 0; j < n; j++) {
                    if (obstacleGrid[i][j] == 1) {
                        return 0;
                    }
                }
            }
            return 1;
        }
        //确认dp数组
        int[][] dp = new int[m+1][n+1];
        //确认递推公式 递推函数依然为 dp[i][j] = dp[i][j-1] + dp[i-1][j];
        //初始化递推数组
        dp[1][1] = 1;
        //确认遍历顺序
        for (int i = 1; i <= m; i++) {
            for (int j = 1; j <= n; j++) {
                if (i==1&&j==1) continue;
                if (obstacleGrid[i-1][j-1] == 1) {
                    dp[i][j] = 0;
                } else {
                    dp[i][j] = dp[i-1][j] + dp[i][j-1];
                }
            }
        }
        //举例推导函数
        return dp[m][n];
    }
}

343.整数拆分

class Solution {
    public int integerBreak(int n) {
        if (n == 2) {
            return 1;
        }
        //确认dp数组含义
        int[] dp = new int[n+1];
        //确认递推公式, dp[i] = Math.max(dp[i], Math.max(dp[j]*(i-j), (i-j) * j));
        //dp数组初始化
        dp[2] = 1;
        //确认dp数组的遍历顺序
        for (int i = 3; i <= n; i++) {
            for (int j = 1; j < i-1; j++) {
                dp[i] = Math.max(dp[i], Math.max(dp[j] * (i-j), (i-j) * j));
            }
        }
        //举例推导结果函数
        return dp[n];
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【进程终止】退出信号 | 三种退出情况 | 如何进程终止returnexit_exit

目录 退出码 退出信号 进程终止情况3 如何进程终止 return退出 库函数exit 系统调用函数_exit ​exit和_exit的区别缓冲区 exit _exit 退出码 回顾上篇 代码跑完&#xff0c;结果正确&#xff08;退出码为0&#xff09;代码跑完&#xff0c;结果不正确&#xff08;退…

批量将GOID转成GO term名并添加BP,MF,CC分类信息

基因本体论&#xff08;Gene Ontology&#xff0c;GO&#xff0c;https://www.geneontology.org&#xff09;是一个广泛应用于生物信息学领域的知识库&#xff0c;它提供了一套标准化的词汇和分类体系&#xff0c;用于描述基因功能、细胞组分和生物过程。GO旨在统一科研人员对基…

C/C++ BM30 二叉搜索树与双向链表

文章目录 前言题目解决方案一1.1 思路阐述1.2 源码 解决方案二2.1 思路阐述2.2 源码 总结 前言 这道题要明白二叉搜索树的概念&#xff0c;同时还要对链表的知识比较熟悉。 题目 输入一棵二叉搜索树&#xff0c;将该二叉搜索树转换成一个排序的双向链表。如下图所示 数据范…

在QEMU上运行OpenSBI+Linux+Rootfs

在QEMU上运行OpenSBILinuxRootfs 1 编译QEMU2 安装交叉编译工具3 编译OpenSBI4 编译Linux5 创建根文件系统5.1 编译busybox5.2 创建目录结构5.3 制作文件系统镜像5.3.1 创建 ext2 文件5.3.2 将目录结构拷贝进 ext2 文件5.3.3 取消挂载 6 运行OpenSBILinuxRootfs 本文所使用的版…

PVZ2 植物克僵尸【第二期】

众所周知&#xff0c;PVZ2&#xff08;植物大战僵尸2&#xff09;中有许多恶心的僵尸&#xff0c;而我们不得不派出它们的————克星&#xff01;&#xff08;*为建议方法&#xff09; 5.战机小鬼 战机小鬼&#xff0c;恶心会发射子弹&#xff0c;所以&#xff1a; 1&…

(三)JSP教程——JSP动作标签

JSP动作标签 用户可以使用JSP动作标签向当前输出流输出数据&#xff0c;进行页面定向&#xff0c;也可以通过动作标签使用、修改和创建对象。 <jsp:include>标签 <jsp:include>标签将同一个Web应用中静态或动态资源包含到当前页面中。资源可以是HTML、JSP页面和文…

【解决】:git clone项目报错fatal: fetch-pack: invalid index-pack output

象&#xff1a;之前一直使用gitee将个人学习和工作相关记录上传到个人gitee仓库&#xff0c;一直没出现过问题。直到有一天换电脑重新拉取代码发现出了问题&#xff0c;具体如下图&#xff1a; 原因分析&#xff1a; 经过查询发现主要原因是因为git clone的远程仓库的项目过大…

【强化学习】公平性Actor-Critic算法

Bringing Fairness to Actor-Critic Reinforcement Learning for Network Utility Optimization 阅读笔记 Problem FormulationLearning AlgorithmLearning with Multiplicative-Adjusted RewardsSolving Fairness Utility Optimization Evaluations 在网络优化问题中&#xff…

懒人网址导航源码v3.9源码及教程

懒人网址导航源码v3.9源码及教程 效果图使用方法部分源码领取源码下期更新预报 效果图 使用方法 测试环境 宝塔Nginx -Tengine2.2.3的PHP5.6 MySQL5.6.44为防止调试错误&#xff0c;建议使用测试环境运行的php与mysql版本首先用phpMyAdmin导入数据库文件db/db.sql 如果导入不…

QT-TCP通信

网上的资料太过于书面化&#xff0c;所以看起来有的让人云里雾里&#xff0c;看不懂C-tcpsockt和S-tcpsocket的关系 所以我稍微画了一下草图帮助大家理解两个套接字之间的关系。字迹有的飘逸勉强看看 下面是代码 服务端&#xff1a; MainWindow::MainWindow(QWidget *parent) …

Kubernetes 教程:在 Containerd 容器中使用 GPU

原文链接:Kubernetes 教程:在 Containerd 容器中使用 GPU 云原生实验室本文介绍了如何在使用 Containerd 作为运行时的 Kubernetes 集群中使用 GPU 资源。https://fuckcloudnative.io/posts/add-nvidia-gpu-support-to-k8s-with-containerd/ 前两天闹得沸沸扬扬的事件不知道…

Golang | Leetcode Golang题解之第67题二进制求和

题目&#xff1a; 题解&#xff1a; func addBinary(a string, b string) string {ans : ""carry : 0lenA, lenB : len(a), len(b)n : max(lenA, lenB)for i : 0; i < n; i {if i < lenA {carry int(a[lenA-i-1] - 0)}if i < lenB {carry int(b[lenB-i-1…

6W 1.5KVDC. 单、双输出 DC/DC 电源模块——TP2L-6W 系列

TP2L-6W系列是一款高性能、超小型的电源模块&#xff0c;2:1电压输入&#xff0c;输出有稳压和连续短路保护功能&#xff0c;隔离电压为1.5KVDC、作温度范围为–40℃到85℃。特别适合对输出电压的精度有严格要求的地方&#xff0c;外部遥控功能对您的设计又多一项选择&#xff…

Liunx磁盘管理(中)

Liunx磁盘管理(上)-CSDN博客 目录 查看块设备信息 lsblk&#xff08;list block devices&#xff09; fdisk gdisk parted blkid df&#xff08;disk free&#xff09; 虚拟机添加硬盘 步骤&#xff1a; 磁盘分区 MBR格式创建分区 使用方法 替代工具 GPT分区格式…

【C 数据结构-动态内存管理】2. 边界标识法管理动态内存

文章目录 【 1. 边界标识法的结构设计 】【 2. 分配算法 】【 3. 回收算法 】3.1 空闲块两侧是占用块3.2 空闲块左侧是空闲块3.3 空闲块右侧是空闲块3.3 空闲块两侧是空闲块 边界标识法 可以解决系统中内存碎片过多而无法使用的问题。 【 1. 边界标识法的结构设计 】 使用边界…

绘唐ai工具怎么获取

这款产品的最大亮点在于其高度精准的语音克隆能力&#xff0c;利用先进的模型&#xff0c;能够捕捉到用户独特的音调、音高和调制方式&#xff0c;使用户能够以前所未有的方式复制和利用自己的声音。仅需10秒钟的录制时间&#xff0c;即可实现声音的克隆&#xff0c;相当便捷。…

Spring Cloud 整合Sentinel

1、引入依赖 版本说明 alibaba/spring-cloud-alibaba Wiki GitHub 父pom <spring.cloud.version>Hoxton.SR12</spring.cloud.version> <spring.cloud.alibaba.version>2.2.10-RC1</spring.cloud.alibaba.version>Sentinel应用直接引用starter <…

基于FPGA的数字密码锁电路Verilog代码Quartus仿真

名称&#xff1a;基于FPGA的数字密码锁电路Verilog代码Quartus仿真(文末获取&#xff09; 软件&#xff1a;Quartus 语言&#xff1a;Verilog 代码功能&#xff1a; 数字密码锁电路的设计 1.设计任务:设计并制作数字密码锁电路 2.设计要求 1.用EDA实训仪的I/设备和PLD志…

纯血鸿蒙APP实战开发——折叠屏扫描二维码方案

折叠屏扫描二维码方案 介绍 本示例介绍使用自定义界面扫码能力在折叠屏设备中实现折叠态切换适配。自定义界面扫码使用系统能力customScan&#xff0c;其提供相机流的初始化、启动扫码、识别、停止扫码、释放相机流资源等能力。折叠屏折叠状态通过监听display的foldStatusCha…

Hive3.0新特性:Materialized Views 物化视图

Materialized Views 物化视图 在 Apache Hive 3.0 中引入了物化视图&#xff08;Materialized Views&#xff09;的支持&#xff0c;它们是预先计算并缓存了查询结果的数据结构&#xff0c;以提高查询性能和降低延迟。物化视图通过将查询的结果存储在物理表中来实现&#xff0…
最新文章