这是一个动态规划的问题。
思路分析:以最后剩下台阶的个数分类。
另外,使用一个数组来缓存前面的结果。
代码:
import java.util.*;
public class GoUpstairs {
public int countWays(int n) {
// write code here
int[] a = new int[100000];
a[1]=1;
a[2]=2;
a[3]=4;
for(int i = 4;i<n+1;i++)
{
a[i] = ((a[i-1]+a[i-2])%1000000007+a[i-3])%1000000007;
}
return a[n];
}
}