C++笔试练习笔记【5】:最小花费爬楼梯(有题目链接) 初识动态规划

文章目录

题目

题目链接:https://www.nowcoder.com/practice/9b969a3ec20149e3b870b256ad40844e?tpld=230\&tpld=39751\&ru=/exam/oj

思路

有几个细节要明确

  • consti是在离开时花费的体力所以在离开时才会加
  • 根据例子我们能知道数组给了i个数我们下标到达i才算到顶,如图如果我们必须到达costi+1才算登顶

动态规划:

  1. 状态表示:
    dpi:到达i位置所用最小花费
  2. 状态转移方程

    因为一次只能向上一个台阶或者两个台阶所以只有i-1,i-2两种可能。
cpp 复制代码
	dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);

代码

cpp 复制代码
#include <iostream>
using namespace std;

#define N 100010

int main() {
    int cost[N]={0};
    int dp[N]={0};
    int n;

    cin >> n;
    for(int i=0;i<n;i++)
        cin >> cost[i];
    
    for(int i=2;i<=n;i++)
        dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
    
    cout << dp[n] << endl;
    return 0;
}

动态规划简介

一、什么是动态规划

动态规划(Dynamic Programming)是一种在解决多阶段决策问题时常用的算法思想。它通过将复杂问题分解成一系列相互关联的子问题,并按照一定的顺序求解这些子问题,从而避免了重复计算,提高了算法的效率。上面的题的思想就是动态规划。

动态规划的核心思想是"最优子结构"和"重叠子问题"。最优子结构意味着一个问题的最优解包含了其子问题的最优解。重叠子问题则是指在求解过程中,相同的子问题会被多次计算。

二、动态规划的应用场景

动态规划在许多领域都有广泛的应用,例如:

  1. 求解最短路问题,如在图中找到从一个节点到另一个节点的最短路径。
    • 例如,在一个城市交通网络中,寻找从起点到终点的最短行驶路线。
  2. 资源分配问题,如何合理分配有限的资源以达到最优效果。
    • 比如在项目管理中,合理分配人力和时间资源,以使项目能够在最短时间内完成。
  3. 背包问题,给定一组物品和一个背包容量,选择哪些物品放入背包能使价值最大化。

三、动态规划的基本步骤

  1. 定义状态表示:明确问题中的状态变量,这些变量通常用来描述子问题的解。
  2. 建立状态转移方程:找出不同状态之间的关系,确定如何从一个状态转移到另一个状态。
  3. 初始化边界条件:确定初始状态的值。
  4. 按照合适的顺序计算状态值:通常是从边界条件开始,逐步计算其他状态的值。

四、动态规划的优缺点

优点:

  1. 能够有效地降低算法的时间复杂度,避免重复计算。
  2. 对于具有最优子结构和重叠子问题的问题,能够得到最优解。

缺点:

  1. 空间复杂度可能较高,需要存储状态值。
  2. 状态定义和转移方程的推导可能比较困难,需要对问题有深入的理解。

总之,动态规划是一种强大的算法思想,掌握它对于解决许多复杂的优化问题具有重要意义。但在实际应用中,需要根据具体问题的特点来选择是否使用动态规划以及如何设计有效的算法。

相关推荐
2401_868534787 小时前
RTOS之RT-Thread & Linux:线程/进程管理与调度核心差异分析
c++·python
一米阳光86619 小时前
软考(中级)软件设计师核心笔记(6)系统开发基础——需求分析、系统设计
笔记·职场发展·需求分析·软考·软件设计师·中级职称
郝学胜-神的一滴9 小时前
Qt 高级编程 040:按钮悬浮弹出滑块弹窗的完整攻略
开发语言·c++·qt·软件工程·用户界面
雨田言炎12 小时前
四、关于Qt项目需要知道的
开发语言·笔记·qt
程序喵大人13 小时前
【C++进阶】STL算法与函数对象 - 02 sort为什么需要随机访问迭代器
开发语言·c++·算法
hanlin0313 小时前
动态规划专练:力扣第121、122题
笔记·算法·leetcode
ZhangShao060714 小时前
题解:CF2249B
c++·算法
摇滚侠14 小时前
SpringBoot 官网 阅读笔记 启用生产就绪功能 端点
spring boot·笔记·后端
AI云海15 小时前
完整机器学习工业项目流水线笔记
人工智能·笔记·机器学习
2601_9657996815 小时前
2026 在线笔试平台深度测评与选型指南:从功能、稳定性、AI能力、防作弊全面分析
人工智能·笔记·功能测试