您的位置:首页 > 大数据 > 人工智能

70. Climbing Stairs

2017-03-18 15:02 134 查看
You are climbing a stair case. It takes nsteps to reach to the top.

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

Note: Given n will be a positive integer.

    翻译:你正在爬楼梯盒。它需要n步到达顶部。每次你可以爬1或2步。你能爬到顶部有多少不同的方式?注意:给定n将是一个正整数。

分析:这个问题似乎是一个动态规划。首先可以看出,

如果n =0,则路的数量应该为零。

如果n = 1,那么只有爬上楼梯的方法。

如果n ==2,那么有两种方式爬楼梯。

当n==3时,先走一层的话,方法数为n=2,先走两层的话,方法数为n=1;可以依此类推,

给定若干楼梯n,他的走的步数就是n-1和n-2的步数和。可以发现规律,他就是斐波那契数列(但是n=1和n=2不都是1)。所以题目就很好写了,代码如下:

public class Solution {

   public int climbStairs(int n) {

       if(n==0) return 0;

       if(n==1) return 1;

       if(n==2) return 2;

       int first=1;

       int second=2;

       int step=0;

       for(int i=2;i<n;i++){

           step=first+second;

           first=second;

           second=step;

       }

       return step;

    }

}

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: