D (1203) : 台阶问题
Submit Page Summary Discussion Time Limit: 1 Sec Memory Limit: 128 Mb Submitted: 21 Solved: 19
Description
有 N 级的台阶,你一开始在底部,每次可以向上迈最多 2 级台阶(最少 1 级),问到达第 N 级台阶有多少种不同方式。
Input
两个正整数N(1 ≤ N ≤ 100000)
Output
一个正整数,为不同方式数
Sample Input
5
Sample Output
8
int f( int n ){
if(n <= 1)
return n;
// 先创建一个数组来保存历史数据
int[] dp = new int[n+1];
// 给出初始值
dp[0] = 0;
dp[1] = 1;
dp[2] = 2;
// 通过关系式来计算出 dp[n]
for(int i = 2; i <= n; i++){
dp[i] = dp[i-1] + dp[i-2];
}
// 把最终结果返回
return dp[n];
}