题目描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
经典爬楼梯问题,小二,关于这个问题你怎么理解啊?
解题思路:假设你现在要去爬5层楼梯,那么你的前一级楼梯就会有两种情况,一种是4级,另外一种是3级,那么我们就可以这样考虑这个问题,你将你到达3级和4级楼梯的方法数加起来就是你到达5级楼梯的方法,用数学公式可以表达为f(5) = f(4) + f(3),看见这个我们就可以想到斐波那契问题,但是如果采用递归的方法,在楼梯数很大的时候就会超出时间限制,时间复杂度会变得很大,因此我们采用动态规划的思路来完成,代码如下:
int[] dp = new int[n+1];
dp[