您的位置:首页 > 健康 > 美食 > 山西做网站流程步骤_公司网站建设申请报告_内蒙古seo优化_站长工具查询网站

山西做网站流程步骤_公司网站建设申请报告_内蒙古seo优化_站长工具查询网站

2024/12/28 14:39:52 来源:https://blog.csdn.net/e2788666/article/details/143453194  浏览:    关键词:山西做网站流程步骤_公司网站建设申请报告_内蒙古seo优化_站长工具查询网站
山西做网站流程步骤_公司网站建设申请报告_内蒙古seo优化_站长工具查询网站

推理出状态表达式

在这里插入图片描述

  • f(5)表示到达第5层,所有可能的方法数。

  • 到达第5层,有可能是从第4层走一步上来,也有可能是从第3层走两步上来。所以我们可以慢慢延伸,画出上面👆🏻的图。

  • 从图中,我们可以看到,这些路径,就像这个树的每一个分支,只要数一下有多少个分支,那到第5层就有多少种路径。

  • f(4)表示了到达第4层的路径数量总和,f(3)表示到达第3层的路径数量的总和,所以f(5)的总数量:f(5) = f(4) + f(3)

  • 总结:f(n) = f(n - 1) + f(n - 2)

Golang代码实现

请添加图片描述

  • 代码实现的逻辑跟上面树状图的逻辑有点不太一样,上面只是得出f(n) = f(n - 1) + f(n - 2)的结论,这里是进行爬楼梯具体的代码实现,用到的是滚动的做法。
func climbStairs(n int) int {// 如果只有一层和两层,就直接返回n就行,题目规定1 <= n <= 45if n <= 2 {return n}// f1表示走到第一层可能有的方法数: 1种,直接走一步。总体上f1是表示f(n - 2)// f2表示走到第二层可能有的方法数:2种,走两步 or 走一步,再走一步。总体上f2是表示f(n - 1)// fn表示走到第n层可能有的方法数,初始化为0。总体上fn是表示f(n)f1, f2, fn := 1, 2, 0for i := 3; i <= n; i++ {       // 从第3层开始计算,计算到第n层刚好结束fn = f1 + f2				// f(n) = f(n - 2) + f(n - 1)f1 = f2						// f(n - 1)替换前面那个f(n - 2),成为新的f(n - 2)f2 = fn						// f(n) 替换前面那个f(n - 1)。成为新的f(n - 1)}return fn
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com