算法王冠上的明珠——动态规划之斐波那契数列问题(第二篇)

目录

[1. LeetCode746. 使用最小花费爬楼梯](#1. LeetCode746. 使用最小花费爬楼梯)

[2. LeetCode91. 解码方法](#2. LeetCode91. 解码方法)


今天我们继续来聊一聊动态规划的斐波那契数列类型的题目

1. LeetCode746. 使用最小花费爬楼梯

这个题目的话也是比较简单的。就是要求我们计算在可以一次走一步或者两步的情况下,到达结尾时的最小消耗。

所以在这道题里面它的状态表示就是走到当前位置的值的最小消耗。

所以在这道题里面它的状态转移方程就是dp[i]=min(dp[i-1],dp[i-2])+c[i]。

它的初始化就是第0个位子设置为c[0],第一个位置设置为c[1]。(怎么设置是因为我们是不知道开始的那个位置的大小,而且因为我们的状态转移方程需要依靠前两个位置的值,所以我们在这里就直接初始化前两个)。

填表顺序就是从前往后就好。

返回值就是dp表第sz-1个位置的值和第sz-2个位置的值的最小值。

cpp 复制代码
class Solution {
public:
    int minCostClimbingStairs(vector<int>& c) {
        int sz=c.size();
        vector<int> dp(sz+1);
        dp[0]=c[0];
        dp[1]=c[1];
        for(int i=2;i<sz;++i)
        {
            dp[i]=min(dp[i-1],dp[i-2])+c[i];
        }
        return min(dp[sz-1],dp[sz-2]);
    }
};

2. LeetCode91. 解码方法

这道题的话就是说,现在给一个数组,然后不同的数字可以代表不同的字母,可以单个字母,也可以两个字母拼在一起,然后要求我们返回这个数组可以组成的不同的字母串的数量。

这道题的话不难,就是多了一些细节上的判断。

在这道题里面它的状态表示就是以当前位置为结尾的字母串数量的最大值。

在这道题里面它的状态转移方程就需要分条件来判断了,如果当前位置不为0的话,那么就先dp[i]+=dp[i-1],然后如果可以和前面一个数字组成大于9并且小于27的数的话,那么dp[i]再+=dp[i-2]。(这边之所以需要判断两遍是因为当前位置为结尾和当前数加上前一个数一起作为结尾,所以需要计算两遍)

]它的初始化就是通过判断的方式来先初始化前面两个数。

填表顺序就是从前往后就好。

返回值就是dp表第sz-1个位置的值就好。(因为必须是所有数字全部用上)

cpp 复制代码
class Solution {
public:
    int numDecodings(string s) {
        int sz=s.size();
        vector<int> dp(sz);
        if(s[0]!='0')
            dp[0]=1;
        else
            return 0;
        
        if(sz==1)
            return 1;

        if(s[1]!='0') 
            dp[1]+=dp[0];
        if((s[0]-'0')*10+s[1]-'0'<27) 
            dp[1]++;

        for(int i=2;i<sz;++i)
        {
            if(s[i]!='0')
                dp[i]+=dp[i-1];

            if(((s[i-1]-'0')*10+s[i]-'0')<27&&((s[i-1]-'0')*10+s[i]-'0')>9)
                dp[i]+=dp[i-2];
        }
        return dp[sz-1];
    }
};
相关推荐
YaBingSec7 分钟前
玄机网络安全靶场:Hadoop YARN ResourceManager 未授权 RCE WP
大数据·数据库·hadoop·redis·笔记·分布式·web安全
Leo.yuan11 分钟前
数据仓库是什么?数据仓库和大数据平台、数据湖、数据中台、湖仓一体有什么区别?
大数据·数据仓库·spark
Aloudata12 分钟前
如何通过 NoETL 指标平台构建企业唯一指标计算中心
大数据·数据库·数据分析·指标平台
fengenrong14 分钟前
20260429
c++·算法
南宫萧幕16 分钟前
Python与Simulink联合仿真:基于DQN的HEV能量管理策略建模与全链路排雷实战
开发语言·人工智能·python·算法·机器学习·matlab·控制
GEO索引未来30 分钟前
国内首部GEO可信传播标准立项通过/DeepSeek-V4 正式上线并开源/Open AI、Google继续推进AI广告标准化
大数据·人工智能·gpt·ai·chatgpt·开源
apollowing32 分钟前
启发式算法WebApp实验室:从搜索策略到群体智能的能力进阶(优)
算法·启发式算法·web app
金融小师妹1 小时前
AI多模态宏观建模视角:超级央行周触发“政策—数据—预期”耦合重估框架
大数据·人工智能·逻辑回归·能源
FIN66681 小时前
底部蓄力,静待花开——清越科技的韧性与曙光
大数据·人工智能·物联网
半部论语1 小时前
CentOS7 + pyenv 安装 Python 3.11 完整指南)
大数据·elasticsearch·python3.11