C语言爬楼梯问题(递推) i++#include文章分类运维 在计算理工学院有一个长腿君,他在爬楼梯的时候从来都是要么上 2个台阶,要么上 3个台阶。由于爬楼梯实在太无聊了,长腿君就开始尝试每天采用不同的方式上楼梯。如果长腿君回家需要爬 N 阶台阶,你能告诉长腿君,他爬楼梯回家有多少种不同的方式吗? #include <std...
基础:楼梯有一个台阶,只有一种走法(一步登上去);两个台阶,有2种走法(一步上去,或分两次上去); 递推:有n个台阶时,设有count(n)种走法,最后一步走1个台阶,有count(n-1)种走法;最后一步走2个台阶,有count(n-2)种走法。于是count(n)=count(n-1)+count(n-2)。 可见,此问题的数学模型竟然是斐波...
由此,我们可以采用动态规划的思想,从f(1)和f(2)开始递推求解f(n)。 下面是C语言的代码实现: int climbStairs(int n){ if(n <= 2) return n; int a = 1, b = 2, c; for(int i = 3; i <= n; i++){ c = a + b; a = b; b = c; } return b; } 在这个代码中,我们首先判断...
思考上的最后一步楼梯,有可能在第n-3个阶梯上走三步,也可能在第n-1个阶梯上走一步,所以总共的走法应该是 二者相加的和! ,按照这个思路再往前倒推步骤,总结到每次到达的阶梯都是前第3个走三步或者前第1个阶梯走一步到达。即可以得到递推公式: f(n) = f(n - 1) + f(n - 3)。注意有特殊情况当...
递推:有n个台阶时,设有count(n)种走法,最后一步走1个台阶,有count(n-1)种走法;最后一步走2个台阶,有count(n-2)种走法。于是count(n)=count(n-1)+count(n-2)。 可见,此问题的数学模型竟然是斐波那契数。 #include<stdio.h> int main() ...
这个就是递推啊~设上i级台阶共有f(i)种不同的方法,很简单就可以知道f(1)=1,f(2)=2…… 当i大于2时,分n种情况讨论:第一步上了1级台阶,第一步上了2级台阶,……第一步上了n级台阶。如果第一步上了1级楼梯,那么还剩下i-1级楼梯,要走完这i-1级楼梯,一共有f(i-1)种方法。
又涉及到递归问题,这道题的大致内容是这样的: (请用递推方式求解)对于一个2行N列的走道。现在用1*2,2*2的砖去铺满。问有多少种不同的方式。下图是一个2行17列的走道的某种铺法。 提示:观察前n个结果,可以得到递推式子;如果N很大,需要高精度计算。 其实这道题,与之前的方格涂色问题很像,说它像不仅因...
爬楼梯递推公式 楼梯,作为连接不同楼层的通道,承载着人们的脚步与情感。每一级楼梯都似乎有着自己的故事,仿佛在诉说着那些曾经踏过它们的人们的心路历程。 曾经,我也曾面对着一座陡峭的楼梯,它高耸入云,仿佛通向天空的阶梯。而现实中的我,却只是个普通的人,对于这座楼梯的高度感到无比的无力和迷茫。 但是,我...
斐波那契数列在爬楼梯问题中应用的通项公式可以通过递归关系或矩阵快速幂等方法得到。具体如下: 1.递归关系:在最简单的形式下,斐波那契数列由以下递推关系定义:F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2),其中n是台阶数。这个递归关系意味着到达当前台阶的方法数等于到达前两个台阶的方法数之...
这是一个斐波那契数列问题,用简单递归法时间复杂度为O( ),用递推公式时间复杂度为O(n)。 class Solution: def climbStairs(self, n: int) -> int: if n<=2:return n f1,f2=1,2 for i in range(3,n+1): f1,f2=f2,f1+f2 return f2 盛最多水的容器...