代码随想录第三十三天(一刷C语言)|斐波那契数爬楼梯使用最小花费爬楼梯

news2024/12/22 18:39:52

创作目的:为了方便自己后续复习重点,以及养成写博客的习惯。

动态规划步骤:

  1. 确定dp数组以及下标的含义
  2. 确定递推公式
  3. dp数组如何初始化
  4. 确定遍历顺序
  5. 举例推导dp数组

一、斐波那契数

思路:参考carl文档

1、dp[i]的定义为:第i个数的斐波那契数值是dp[i]。

2、递推公式为: dp[i] = dp[i - 1] + dp[i - 2]。

3、dp数组初始化:dp[0] = 0,dp[1] = 1。

4、从递归公式可以看出,dp[i]是依赖于 dp[i - 1] 和 dp[i - 2],遍历的顺序为从前到后遍历。

5、自己模拟推到dp数组,debug的时候添加打印。

ledcode题目:https://leetcode.cn/problems/fibonacci-number/

AC代码:

int fib(int n){
    //当n <= 1时,返回n
    if(n <= 1)
        return n;
    //动态开辟一个int数组,大小为n+1
    int *dp = (int *)malloc(sizeof(int) * (n + 1));
    //设置0号位为0,1号为为1
    dp[0] = 0;
    dp[1] = 1;

    //从前向后遍历数组(i=2; i <= n; ++i),下标为n时的元素为dp[i-1] + dp[i-2]
    int i;
    for(i = 2; i <= n; i++) {
        dp[i] = dp[i - 1] + dp[i - 2];
    }
    return dp[n];
}

二、爬楼梯

思路:参考carl文档

1、dp[i]的定义为: 爬到第i层楼梯,有dp[i]种方法。

2、确定递推公式:dp[i] = dp[i - 1] + dp[i - 2] 。

3、dp数组初始化:不初始化dp[0],只初始化dp[1] = 1,dp[2] = 2,从i = 3开始递推。

4、从递推公式可知遍历顺序是从前向后遍历。

5、举例当n为4的时候,dp[4] = 5。

lecode题目:https://leetcode.cn/problems/climbing-stairs/description/

AC代码:

int climbStairs(int n){
    //若n<=2,返回n
    if(n <= 2)
        return n;
    //初始化dp数组,数组大小为n+1
    int *dp = (int *)malloc(sizeof(int) * (n + 1));
    dp[0] = 0, dp[1] = 1, dp[2] = 2;

    //从前向后遍历数组,dp[i] = dp[i-1] + dp[i-2]
    int i;
    for(i = 3; i <= n; i++) {
        dp[i] = dp[i - 1] + dp[i - 2];
    }
    //返回dp[n]
    return dp[n];
}

三、使用最小花费爬楼梯

思路:参考carl文档

1、dp[i]的定义为:到达第i台阶所花费的最少体力为dp[i]。

2、确定递推公式为:dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2])。

3、dp数组初始化:dp[0] = 0,dp[1] = 0。

4、dp[i]由dp[i-1]dp[i-2]推出,故从前到后遍历cost数组。

5、举例推导dp数组(模拟一组cost)

ledcode题目:https://leetcode.cn/problems/min-cost-climbing-stairs/description/

AC代码:

#include <math.h>
int minCostClimbingStairs(int *cost, int costSize) {
  int dp[costSize + 1];
  dp[0] = dp[1] = 0;
  for (int i = 2; i <= costSize; i++) {
    dp[i] = fmin(dp[i - 2] + cost[i - 2], dp[i - 1] + cost[i - 1]);
  }
  return dp[costSize];
}

全篇后记:

        开启全新篇章动态规划,之前有刷过但是不成体系,希望能一刷掌握思路与方法,给后面的刷题打下坚实的基础。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA巩固基础:秒表的设计

设计要求&#xff1a; 6位8段数码管&#xff0c;低三位显示毫秒计数&#xff0c;最高位显示分钟&#xff0c;其余两位显示秒计数。 开始案件与暂停按键&#xff0c;复位按键直接全部归零。 扩展部分&#xff1a;每计满一次&#xff0c;led移位一次。 框图设计&#xff1a; …

Android BluetoothAdapter 使用(二)

Android BluetoothAdapter 使用(二) 本篇文章主要讲下蓝牙设备的配对. 1: 蓝牙设备列表展示 下 面是蓝牙设备adapter的代码: package com.test.bluetooth;import android.bluetooth.BluetoothDevice; import android.content.Context; import android.view.LayoutInflater;…

Netty—NIO万字详解

文章目录 NIO基本介绍同步、异步、阻塞、非阻塞IO的分类NIO 和 BIO 的比较NIO 三大核心原理示意图NIO的多路复用说明 核心一&#xff1a;缓存区 (Buffer)Buffer类及其子类Buffer缓冲区的分类MappedByteBuffer类说明&#xff1a; 核心二&#xff1a;通道 (Channel)Channel类及其…

解决vue3 动态引入报错问题

之前这样写的&#xff0c;能使用&#xff0c;但是有警告 警告&#xff0c;查了下&#xff0c;是动态引入的问题&#xff0c;看到说要用glob 然后再我的基础上&#xff0c;稍微 改了下&#xff0c;就可以了&#xff1a; 最后打印了下&#xff0c;modules[../../components/flowc…

Javascript高频面试题

系列文章目录 文章目录 系列文章目录前言1.JavaScript常见数据类型null 和 undefind区别symbol&#xff08;ES6新增&#xff09;、bigInt&#xff08;ES10新增&#xff09; 2.JavaScript判断数据类型的方式3. 和 区别&#xff0c;分别在什么情况使用&#xff1f;4.变量声明 va…

c#winform学生信息管理系统sqlserver

vs2022开发 数据库sqlserver和c#winform结合设计的学生信息管理系统 一&#xff0e;需求分析 1.1设计可视化界面&#xff0c;具有身份验证功能&#xff0c;需要登录时输入账号及密码。 1.2学生用户能够注册自己的账号&#xff0c;添加自己的基本注册信息&#xff1a;学号、密…

JAVA的关键字、标识符和命名规范

目录 一、Java 二、关键字 三、标识符 四、命名规范 一、Java Java是一种面向对象的高级编程语言&#xff0c;最初由Sun Microsystems公司于1995年发布。它的特点是可移植性强、可靠性高、安全性好以及简单易学。Java是一种跨平台的语言&#xff0c;它可以在不同的操作系统…

在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)

背景 在项目过程中&#xff0c;有时候你需要调用非C#编写的DLL文件&#xff0c;尤其在使用一些第三方通讯组件的时候&#xff0c;通过C#来开发应用软件时&#xff0c;就需要利用DllImport特性进行方法调用。本篇文章将引导你快速理解这个调用的过程。 步骤 1. 创建一个CSharp…

java web系统的常见安全问题

一、背景 java开发的系统在发布到互联网后都需要进行安全扫描&#xff0c;本文主要总结开发web系统需要注意的与系统安全相关的问题。因为在做需求开发时&#xff0c;很少产品会将系统安全的因素考虑在内&#xff0c;总觉得实现个需求很简单&#xff0c;就是一些页面&#xff0…

Leetcode—131.分割回文串【中等】

2023每日刷题&#xff08;五十九&#xff09; Leetcode—131.分割回文串 算法思想 实现代码 class Solution { public:bool isPalindrome(string s, int left, int right) {while(left < right) {if(s[left] ! s[right--]) {return false;}}return true;}vector<vector…

云服务配置docker镜像容器以及常用操作命令

首先通过ssh进入云服务器。如何ssh进入云服务器。 简单讲解一下docker中镜像和容器&#xff0c;打个比方&#xff0c;镜像相当于印钱的那个模板&#xff0c;容器相当于从模板上拓下来的钱&#xff0c;不同的模板可以印出不同的钱。但容器被修改后也可以变成新的镜像&#xff0…

flink yarn-session 启动失败retrying connect to server 0.0.0.0/0.0.0.0:8032

原因分析&#xff0c;启动yarn-session.sh&#xff0c;会向resourcemanager的端口8032发起请求&#xff1a; 但是一直无法请求到8032端口&#xff0c;触发重试机制会不断尝试 备注&#xff1a;此问题出现时&#xff0c;我的环境ambari部署的HA 高可用hadoop&#xff0c;三个节点…

Amortized Bootstrapping of LWE:使用 BFV 打包处理

参考文献&#xff1a; [AP13] Alperin-Sheriff J, Peikert C. Practical bootstrapping in quasilinear time[C]//Annual Cryptology Conference. Berlin, Heidelberg: Springer Berlin Heidelberg, 2013: 1-20.[MS18] Micciancio D, Sorrell J. Ring packing and amortized F…

电源适配器老化测试方法分享 电源测试系统助力老化测试

电源适配器老化测试是指对适配器进行高负荷、长时间的运行测试&#xff0c;从而评估电源适配器的性能、稳定性和可靠性。通过老化测试可以检测电源适配器长时间的使用情况&#xff0c;从而指导适配器的设计和研发&#xff0c;提高电源适配器的质量。由于老化测试要求长时间运行…

DVGO 代码阅读

BBx 的大小范围是 根据 相机的 位姿来构建的&#xff0c;会刚好 Cover 相机的移动范围&#xff0c;相当于 StreetSurf 里面的 close-range 的部分&#xff0c;代码在compute_bbox_by_cam_frustrm_unbounded 这个函数里面&#xff1a; xyz_min, xyz_max _compute_bbox_by_cam_f…

如何为您的企业制定客户服务政策(7个步骤+免费模板)

当企业制定客户服务政策时&#xff0c;其核心目标是调整客户期望&#xff0c;并建立精确的程序和政策来促进这一目标。这些书面政策作为员工指南&#xff0c;概述了公司的期望&#xff0c;并为处理各种情况提供了框架。通过全面了解客户服务政策并掌握创建有效政策的方法&#…

LVS 负载均衡群集 NAT

目录 企业群集应用概述 群集的含义 企业群集分类 根据群集所针对的目标差异&#xff0c;可分为三种类型 负载均衡群集(Load Balance Cluster) 高可用群集(High Availability Ciuster) 高性能运算群集 (High Performance Computer Cluster) 负载均衡群集架构 负载均衡的…

炒股怎么做杠杆?安全正规的融资融券了解一下!

加杠杆炒股是指放大投资资金进行股票交易&#xff0c;比如自有资金100万&#xff0c;向证券公司融资100万&#xff0c;那么投资者炒股的本金就有200万。当股市行情好的时候可以放大我们的收益&#xff01; 目前我国股票加杠杆通过融资融券来实现&#xff0c;这个是唯一安全正规…

协作办公原来如此简单?详解 ONLYOFFICE 协作空间 2.0 更新

协作办公原来如此简单&#xff1f;详解 ONLYOFFICE 协作空间 2.0 更新 上周&#xff0c;ONLYOFFICE 的协作空间推出升级版 2.0 版本了&#xff1a; ONLYOFFICE 协作空间 2.0 现已发布&#xff1a;新增公共房间、插件、重新分配数据、RTL 界面等功能 ONLYOFFICE 协作空间是去…

chromium硬件加速播放video观察(intel630和Mali G610)

Intel UHD Graphics 630 Intel(R) UHD Graphics 630驱动程序版本: 27.20.100.8935 驱动程序日期: 2020/10/28 DirectX 版本: 12 (FL 12.1) 物理位置&#xff1a; PCI 总线 0、设备 2、功能 0利用率 2% 专用 GPU 内存 共享 GPU 内存 0.3/7.9 GB GPU 内存…