题目:
思路:将整个问题拆分成一个一个的小问题,题目中n为正整数,n=0时无意义
我们发现走N阶台阶,最后一步必定是1步或者2步到达。
那么N阶台阶的走法不就相当于最后走一步和最后走两步的走法的总和吗?
换一种方式来说,我们取一个中间态:如果总共有3级台阶,3级台阶的走法只会存在两种大的可能:1+2、2+1、1+1+1,即3级台阶的所有走法就是走了1阶台阶的走法加上走了2阶台阶的走法,而1阶台阶的走法只有一种,2阶台阶的走法有2种,所有3阶台阶的走法有3种,我们使用一种更通用的方式进行表达的话就是所谓的状态转换方程:
dp[n]=dp[i-1]+dp[i-2]
代码实现:
动态规划:时间复杂度为O(n)
1.把大的问题分解成小的问题,从小的问题中推导出大的问题
2.将小问题的解记录下来,下次使用不需要重复计算
相比递归方法:时间复杂度O(2 ^n),不建议
网友评论