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

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

目录

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

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个位置的值的最小值。

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个位置的值就好。(因为必须是所有数字全部用上)

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]; } };

Read more

π0的微调——如何基于各种开源数据集、以及私有数据集微调openpi(含我司七月的微调实践及openpi在国产臂上的部署)

π0的微调——如何基于各种开源数据集、以及私有数据集微调openpi(含我司七月的微调实践及openpi在国产臂上的部署)

前言 25年2.4日,几个月前推出π0的公司Physical Intelligence (π)宣布正式开源π0及π0-FAST,如之前所介绍的,他们对用超过 10,000 小时的机器人数据进行了预训练 该GitHub代码仓库「 π0及π0-FAST的GitHub地址:github.com/Physical-Intelligence/openpi」包括4个方面:简言之,就是 1. π0本身的代码和权重 2. 特定平台上特定任务的微调checkpoint 3. 推理代码 4. 微调代码 注意本文接上一篇文章《π0源码剖析——从π0模型架构的实现(如何基于PaLI-Gemma和扩散策略去噪生成动作),到基于C/S架构下的模型训练与部署》而来,但本文侧重对π0的微调 至于什么是π0,则参见此文《π0——用于通用机器人控制的VLA模型:一套框架控制7种机械臂(基于PaliGemma和流匹配的3B模型)》 顺带,值得一提的是,我司「七月在线」也是目前国内具身落地经验最丰富的团队之一了 * 比如每个月都在并行开发多个具身订单,全职开发者和合作开发者总计百余人,

By Ne0inhk
Git 用户名与邮箱配置指南

Git 用户名与邮箱配置指南

前言 在使用 Git 进行版本控制时,每一次代码提交(commit)都会记录提交者的身份信息。这些信息不仅用于追踪代码变更历史,还在团队协作、代码审查和开源贡献中发挥着重要作用。 Git 通过 用户名(user.name) 和 邮箱(user.email) 来标识开发者身份。正确配置这两项信息,是使用 Git 的第一步,也是确保提交记录清晰、可追溯的关键。 一、为什么需要设置用户名和邮箱? Git 是一个分布式版本控制系统,它不依赖中央服务器来管理用户身份。因此,每个开发者必须在本地明确声明自己的身份。Git 会在每次执行 git commit 时,自动将 user.name 和 user.email 写入提交记录。 如果没有正确设置,可能会导致: * 提交记录显示为 unknown 或默认系统用户名;

By Ne0inhk
MiniMax AI 开源 MiniMax-M2.1

MiniMax AI 开源 MiniMax-M2.1

遇见MiniMax-M2.1 今天我们正式将MiniMax-M2.1交付给开源社区。这次发布不仅是参数的更新,更是向普及顶级智能体能力迈出的重要一步。 M2.1的诞生旨在打破高性能智能体必须闭门造车的刻板印象。我们专门优化了模型在编码、工具使用、指令遵循和长远规划方面的稳健性。从自动化多语言软件开发到执行复杂的多步骤办公流程,MiniMax-M2.1让开发者能够构建新一代自主应用程序——同时保持完全透明、可控且易于获取。 我们相信真正的智能应该触手可及。M2.1是我们对未来的承诺,也是您手中的强大新工具。 使用方法 * MiniMax-M2.1 API 现已在 MiniMax 开放平台上线:https://platform.minimax.io/docs/guides/text-generation * 基于 MiniMax-M2.1 构建的产品 MiniMax Agent 现已公开可用:https://agent.minimax.io/ * MiniMax-M2.1 模型权重现已开源,支持本地部署和使用:https:

By Ne0inhk