N阶楼梯上楼问题
题目截图:
思路:
可以用动态规划。令 dp[i] 表示 i 阶楼梯有多少种方法,则状态转移方程为:
dp[i] = dp[i-2] + dp[i-1], i≥3
边界:dp[1]=1, dp[2]=2。
代码如下:
1 /* 2 N阶楼梯上楼问题 3 */ 4 5 #include <stdio.h> 6 #include <string.h> 7 #include <math.h> 8 #include <stdlib.h> 9 #include <time.h> 10 #include <stdbool.h> 11 12 int dp[91]; 13 14 int main() { 15 // 边界 16 dp[1] = 1; 17 dp[2] = 2; 18 int i; 19 for(i=3; i<=90; ++i) { 20 // 状态转移方程 21 dp[i] = dp[i-2] + dp[i-1]; 22 } 23 int N; 24 while(scanf("%d", &N) != EOF) { 25 // 输出 26 printf("%d\n", dp[N]); 27 } 28 29 return 0; 30 }