CCI 9.1 台阶问题

有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶,2阶或3阶。实现一个方法,计算小孩有多少种上楼梯的方式。

分析:这是个动态规划问题。

状态: f(i) 表示上到第 i 阶有多少种上楼梯方式,

状态转移方程:f(i) = f(i-1)+f(i-2)+f(i-3)。 

class Solution{
	public int step(int n){
		if(n<=0) return 0;
		if(n==1) return 1;
		if(n==2) return 2;
		if(n==3) return 4;
		int[] steps = new int[n];
		steps[0] = 1;
		steps[1] = 2;
		steps[2] = 4;
		for(int i=3; i<n; i++){
			steps[i] = steps[i-1]+steps[i-2]+steps[i-3];
		}
		return steps[n-1];
	}
}


你可能感兴趣的:(动态规划)