509. 斐波那契数

func fib(n int) int {
dp := make([]int, 2)
dp[0] = 0
dp[1] = 1
for i := 2; i <= n; i++{
dp = append(dp,dp[i - 1] + dp[i - 2])
}
return dp[n]
}
70. 爬楼梯

func climbStairs(n int) int {
dp := make([]int, 3)
dp[1] = 1
dp[2] = 2
for i := 3; i <= n; i++{
dp = append(dp, dp[i - 1] + dp[i - 2])
}
return dp[n]
}
746. 使用最小花费爬楼梯
同样是前面两种的最小值加上当前的cost即可。
func minCostClimbingStairs(cost []int) int {
dp := make([]int, len(cost))
dp[0] = cost[0]
dp[1] = cost[1]
for i := 2; i < len(cost);i++{
dp[i] =int(math.Min(float64(dp[i - 1]), float64(dp[i - 2]))) + cost[i]
}
//return dp[len(cost) - 1]
return int(math.Min(float64(dp[len(cost) - 2]), float64(dp[len(cost)- 1] )))
}
文章介绍了使用动态规划方法解决斐波那契数列、爬楼梯问题以及最小花费爬楼梯问题的代码实现,展示了如何通过状态转移方程求解这类优化问题。
800

被折叠的 条评论
为什么被折叠?



