动态规划——走阶梯问题

问题:

有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?

注:规定从一级到一级有0种走法。

分析:

(1)公式 F(n) = F(n-1)+F(n-2)。

(2)初始化:因为F(1) = 0,所以F(2) = 1;F(3) = 2。

(3)使用switch实现多重判断

code :

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String args[]) {
 5         Scanner in = new Scanner(System.in);
 6         int n = in.nextInt();
 7         int m;
 8         while(n>0) {
 9             m = in.nextInt();
10             
11             switch(m) {
12             case 1:
13                 System.out.println(0);
14                 break;
15             case 2:
16                 System.out.println(1);
17                 break;
18             case 3:
19                 System.out.println(2);
20                 break;
21             default:
22                 int[] dp = new int[m+1];
23                 dp[1] = 0;
24                 dp[2] = 1;
25                 dp[3] = 2;
26                 for(int i=4;i<=m;i++) {
27                     dp[i] = dp[i-1]+dp[i-2]+1;
28                 }
29                 System.out.println(dp[m]);
30             }
31             n--;
32         }
33         in.close();
34     }
35 }
原文地址:https://www.cnblogs.com/dream-flying/p/12800804.html