动态规划之Climbing Stairs(爬楼梯) java实现
作者:互联网
问题
有一个楼梯,总共有n阶台阶。每一次,可以上一个台阶,也可以上两个台阶。问,爬这样的一个楼梯,一共有多少不同的方法?
如n=3,可以爬上这个梯子的方法有:[1,1,1],[1,2],[2,1],所以答案为3。
问题分析
动态规划的问题,我们先把问题转化为递归问题进行分析:
看到上面的图,大家是不是有一种熟悉的感觉,没错,这就是斐波那契数列的递归图。先通过递归方式解决问题,然后以动态规划方式解决问题。
问题解决
递归方式
public static int computeWay(int n) {
if (n == 0 || n == 1)
return 1;
return computeWay(n-1) + computeWay(n-2);
}
动态规划方式
public static int computeWayBetter(int n) {
int[] res = {1,2};
if (n < 2) {
return res[n];
}
int first = 1;
int second = 1;
int result = 0;
for (int i=2;i<=n;i++) {
result = first+second;
first = second;
second = result;
}
return result;
}
注意:n从0开始
标签:computeWay,java,递归,int,second,result,Climbing,return,Stairs 来源: https://blog.csdn.net/mameng1988/article/details/111630390