zoukankan      html  css  js  c++  java
  • 爬楼梯(LintCode) .

    爬楼梯

    假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?

    样例

    比如n=3,1+1+1=1+2=2+1=3,共有3中不同的方法

    返回 3

    用递归又超时了。。于是又换了DP,dp并不熟悉,于是又搞了好久。

    首先向右是跳一格,向下是跳两格,dp[j]是到达(i,j)的不同的路径数,把每一行最左的剩余步数为0的点的路径数求和就是答案。

     1 public class Solution {
     2     /**
     3      * @param n: An integer
     4      * @return: An integer
     5      */
     6     int sum = 0;
     7     public int climbStairs(int n) {
     8         sum = 1;
     9 //        climb(n);
    10 //        return sum;
    11         int[] dp = new int[n+1];
    12         for(int i=0;i<n+1;i++) {
    13             dp[i] = 1;
    14         }
    15         n -= 2;
    16         while(n >= 0) {
    17             int j;
    18             for(j=1; j<n+1; j++) {
    19                 dp[j] += dp[j-1];
    20             }
    21             sum+=dp[j-1];
    22             n -= 2;
    23         }
    24         
    25         return sum;
    26     }
    27     
    28     public void climb(int n) {
    29         if(n == 0) sum++;
    30         else if(n == 1) sum++;
    31         else if(n == 2) sum += 2;
    32         else if(n == 3) sum += 3;
    33         else {
    34             if(n > 3) climb(n-1);
    35             if(n > 3) climb(n-2);
    36         }
    37         return;
    38     }
    39 }
    View Code
  • 相关阅读:
    集合
    第五天
    第四天
    第二天
    ieee 期刊缩写(转载)
    JAVA学习笔记03
    JAVA学习笔记2
    JAVA学习笔记01
    Latex 图片排版
    非奇异终端滑模
  • 原文地址:https://www.cnblogs.com/FJH1994/p/5023978.html
Copyright © 2011-2022 走看看