牛客网:上楼梯(动态规划)
import java.util.*;
public class GoUpstairs {
/**
动态规划:定义状态、初始化状态、确定状态转移方程、进行输出
*/
public int countWays(int n) {
// write code here
if(n <1){
return 0;
}
//定义状态dp[i]:上i个台阶的方式
int[] dp = new int[n+1];
//初始化状态
dp[1] =1;
dp[2] = 2;
dp[3] = 4;
for(int i=4;i<n+1;i++){
//状态转移方程
int sum = (dp[i-2]+dp[i-3])%1000000007;
dp[i] = (dp[i-1]+sum)%1000000007;
}
return dp[n];
}
}