題目如下:

1 /** 2 * @author sunhongguang 3 * @create 2020-04-17-12:10 4 */ 5 public class Test4 { 6 public static void main(String[] args) { 7 int n = 45; 8 int reslut = climbStairs(n); 9 System.out.println(n+"階臺階,一共有"+reslut+"種爬法"); 10 } 11 12 /**假設你正在爬樓梯,需要 n 階你才能到達樓頂, 13 * 每次你可以爬 1 或 2 個臺階,你有多少種不同的方法可以爬到樓頂呢? 14 * 遞回暴力求解 15 * @param n 臺階的個數 16 * @return 有多少中爬法 17 */ 18 private static int climbStairs(int n) { 19 if(n <= 2) return n; 20 return climbStairs(n-1) + climbStairs(n-2); 21 } 22 23 /**假設你正在爬樓梯,需要 n 階你才能到達樓頂, 24 * 每次你可以爬 1 或 2 個臺階,你有多少種不同的方法可以爬到樓頂呢? 25 * 動態規劃法 26 * @param n 臺階的個數 27 * @return 有多少中爬法 28 */ 29 private static int climbStairs_1(int n) { 30 if(n == 1) return 1; 31 int[] dp = new int[n+1]; 32 dp[1] = 1; 33 dp[2] = 2; 34 for(int i=3;i<=n;i++){ 35 dp[i] = dp[i-1]+dp[i-2]; 36 } 37 return dp[n]; 38 } 39 }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/199352.html
標籤:其他
