假设一段楼梯共15个台阶,小明一步最多能上3个平台,编写程序计算小明上这段楼梯一共有多少种方法?
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n=35;
int[] arr=new int[n+1];//单用递归复杂度大计算慢,重复计算多
arr[1]=1;
arr[2]=2;
arr[3]=4;//前三层走法明确
if(n<=3)
System.out.println(arr[n]);
else {
for(int i=4;i<n+1;i++) {
// 走到n有三种走法分别是再走从n-1走1步或从n-2走2步或n-3走3步,动态规划转移方程
arr[i]=arr[i-1]+arr[i-2]+arr[i-3];
}
System.out.println(arr[n]);
}
}