zoukankan      html  css  js  c++  java
  • 70. Climbing Stairs(动态规划 爬台阶,一次只能爬1,2两节)

    You are climbing a stair case. It takes n steps to reach to the top.

    Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

    Example 1:

    Input: 2
    Output:  2
    Explanation:  There are two ways to climb to the top.
    
    1. 1 step + 1 step
    2. 2 steps
    

    Example 2:

    Input: 3
    Output:  3
    Explanation:  There are three ways to climb to the top.
    
    1. 1 step + 1 step + 1 step
    2. 1 step + 2 steps
    3. 2 steps + 1 step


    f(1) = 1

    f(2) = 2

    f(3) = f(n-1)+f(n-2)

    f(t) = f(t-1)+ f(t-2)

    递归超时::

    1 class Solution {
    2     public int climbStairs(int n) {
    3         if(n<3) return n;
    4         return climbStairs(n-1) + climbStairs(n-2);
    5     }
    6 }

    动态规划!!!!

     1 class Solution {
     2     public int climbStairs(int n) {
     3         int dp[] = new int[n+1];
     4         for(int i=0;i<=n;i++){
     5             if(i<3)
     6             dp[i] = i;
     7             else
     8                 dp[i] = dp[i-1]+dp[i-2];
     9         }
    10         return dp[n];
    11     }
    12     
    13 }

    Fibonacci Number:

     1 class Solution {
     2     public int climbStairs(int n) {
     3         if(n<3) return n;
     4         int t1 = 1;
     5         int t2 = 2;
     6         int t3;
     7         for(int i=2;i<n;i++){
     8             t3 = t1+t2;
     9             t1 = t2;
    10             t2 = t3;
    11         }
    12         return t2;
    13     }
    14     
    15 }
  • 相关阅读:
    MySQL远程登陆
    一键安装LAMP wordpress
    编译安装httpd2.4.46
    RDB转化AOF 花式删库
    3周作业
    2周作业
    1周作业
    预习第三周作业
    预习第二周作业
    预习第一周作业
  • 原文地址:https://www.cnblogs.com/zle1992/p/8721721.html
Copyright © 2011-2022 走看看