leetcode–climbing_stairs
题意:有一个n阶的台阶,一次可以跨1步或者或者2步,问总共有多少种不同的方法到达台阶顶端
分析:本题不是很难,也比较容易想到用动态规划来求解该题。设x[i]表示上i阶台阶有多少种方法,则递推公式为:
x[i]=⎧⎩⎨⎪⎪⎪⎪112x[i−1]+x[i−2]i = 0i = 1i = 2i > 2
其实就是一个斐波那契数列
代码
public int climbStairs(int n) {
if(n < 0){
return 0;
}else if(n == 0){
return 1;
}else if(n == 1){
return 1;
}else if(n == 2){
return 2;
}else{
int[] climb = new int[n]; //动态规划方法,该数组用于保存中间结果
climb[0] = 1;
climb[1] = 2;
for(int i = 2; i < n; i++){
climb[i] = climb[i - 1] + climb[i - 2];
}
return climb[n - 1];
}
}