首页 > 其他 > 详细

Climbing Stairs

时间:2014-03-25 20:55:59      阅读:338      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
 1 int climbStairs(int n)
 2 {
 3     if(n<=0)
 4         return 0;
 5     if(n==1)
 6         return 1;
 7     if(n==2)
 8         return 2;
 9     return climbStairs(n-1)+climbStairs(n-2);
10 }
bubuko.com,布布扣

青蛙跳台阶问题,第一反应就是上面的代码了,结果是 超时

bubuko.com,布布扣
 1     int climbStairs(int n) {
 2         if(n<=0)
 3             return 0;
 4         int C[n+1];
 5         int i;
 6         for(i=0;i<n+1;++i)
 7             C[i]=0;
 8         C[1]=1;
 9         C[2]=2;
10         for(i=3;i<n+1;++i)
11             C[i]=C[i-1]+C[i-2];
12         return C[n];
13     }
bubuko.com,布布扣

AC,可是这个空间复杂度是O(n),可以优化的,没有必要保存数组,只需要3个变量就可以了

bubuko.com,布布扣
 1     int climbStairs(int n) {
 2         if(n<=0)
 3             return 0;
 4         int i,first,second,result;
 5         if(n==1)
 6             return 1;
 7         if(n==2)
 8             return 2;
 9         first=1;
10         second=2;
11         for(i=3;i<=n;++i){
12             result=first+second;
13             first=second;
14             second=result;
15         }
16         return result;
17     }
bubuko.com,布布扣

Climbing Stairs,布布扣,bubuko.com

Climbing Stairs

原文:http://www.cnblogs.com/crane-practice/p/3622674.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!