码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode Climbing Stairs 爬楼梯

时间:2014-11-24 20:25:30      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   sp   for   on   div   问题   

 

递归法(TLE代码):

 1 class Solution {
 2 public:
 3     int climbStairs(int n) {
 4         if(n==0)
 5             return 1;
 6         if(n<0)
 7             return 0;
 8         return (climbStairs(n-1)+climbStairs(n-2));
 9     }
10 };

 

动态规划法:

 1 class Solution {
 2 public:
 3     int climbStairs(int n) {
 4         if(n==1) return 1;
 5         if(n==2) return 2;
 6         int a=1,b=2,c=0,i;
 7         for( i=0;i<n-2 ;i++ ){
 8             c=a+b;
 9             a=b;
10             b=c;
11         }
12         return c;
13     }
14 };

 

题意:爬楼梯,给出一条楼梯的阶数,每次可以走1步,或者两步一起走,那么就有两种走法走完这n阶。问有多少种走法走完这楼梯,返回它。

思路:当n=1时,返回1;当n=2时,返回2。当n>3时,要返回的是n-1和n-2所要返回的数。比如n=3,那么就返回1+2的值,n=4,返回3+2。类推下去。

吐槽:原来很困惑这个问题,用递归写了一下,发现不行,虽然代码很简单。之后考虑各种方法,再用此递归法计算一下各个返回值,发现了规律,原来如此。~

 

LeetCode Climbing Stairs 爬楼梯

标签:style   blog   io   color   sp   for   on   div   问题   

原文地址:http://www.cnblogs.com/xcw0754/p/4119384.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!