代码随想录算法训练营第三十八天|509. 斐波那契数、70.爬楼梯、746.使用最小花费爬楼梯
最编程
2024-02-22 21:40:09
...
509. 斐波那契数
public class Solution {
public int Fib(int n) {
if (n < 2)
{
return n;
}
int[] dp=new int[n+1];
dp[0]=0;
dp[1]=1;
for(int i=2;i<=n;i++)
{
dp[i]=dp[i-1]+dp[i-2];
}
return dp[n];
}
}
首先分析状态转移方程,斐波那契数是由前面两个数加起来组成当前数,所以Dp[i]=Dp[i-1]+Dp[i-2],如果N小于2,则直接返回N,因为第一个数是0,第二个数1,所以Dp[0]=0,Dp[1]=1,所以结合状态方程最终返回出Dp[n]的值。
70.爬楼梯
public class Solution {
public int ClimbStairs(int n) {
if(n<=2)
{
return n;
}
int[] dp=new int[n+1];
dp[1]=1;
dp[2]=2;
for(int i=3;i<=n;i++)
{
dp[i]=dp[i-1]+dp[i-2];
}
return dp[n];
}
}
首先分析状态转移方程,爬楼梯一问题终点是由前面两台阶的组合加起来组成的,所以Dp[i]=Dp[i-1]+Dp[i-2],如果N小于2直接返回N,第一个阶梯只有一种方法,第二阶楼梯有两种方法分别是从起点一步一步过来,或者起点直接过来两种方法,所以Dp[1]=1,Dp[2]=2,同理最终返回Dp[n]的值。
746.使用最小花费爬楼梯
public class Solution {
public int MinCostClimbingStairs(int[] cost) {
int sum=0;
int []dp=new int[cost.Length+1];
dp[0]=0;
dp[1]=0;
for(int i=2;i<dp.Length;i++)
{
dp[i]=Math.Min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
}
return dp[dp.Length-1];
}
}
首先分析状态转移方程,爬楼梯一问题终点是由前面两台阶的组合加起来组成的所以是Dp[i-1]+Cost[i-1]和Dp[i-2]+Cost[i-2],但由于是开销最小,所以每次选这前两个方案中最小的作为开销使用,即Dp[i]=Math.Min(Dp[i-1]+Cost[i-1],Dp[i-2]+Cost[i-2]),最终Dp的最后一个值。
上一篇: 探讨密码与安全新趋势:隐形文字技术专篇
下一篇: 游戏如何做到无视攻击
推荐阅读
-
使用 namp 验证 SSL/TSL 相关漏洞 CVE-2015-2808,CVE-2013-2566,CVE-2014-3566,CVE-2016-2183,CVE-2015-4000,Transient Diffie-Hellman public key too weak 等。
-
请谨慎使用这些 Linux 命令!
-
博弈论]斐波那契博弈
-
代码冲突是如何产生的以及如何解决
-
为什么大家都在使用 WebRTC?
-
人工智能面试题:为什么二元分类不使用 MSE 损失函数?-人工智能面试问题:为什么二元分类不使用 MSE 损失函数?
-
基本算法练习 200 问题 09,泳池填料
-
[法斯原理和使用简介] - 🥳 法斯使用说明
-
VLC 教程 (I):使用 VLC 录制屏幕
-
PostgreSQL] GIN 索引安装和使用 - 完全模糊匹配/数组匹配、PG 批量插入数以万计的随机生成数据、随机生成字符串/数组GIN 索引安装和使用 - 全模糊匹配/数组匹配,PG 批量插入数以万计的随机生成数据,随机生成字符串/数组