4/09/2014

Leetcode -- Climbing Stairs

class Solution {  
 public:  
   int climbStairs(int n) {  
     vector<int> dp(n, 0);  
     dp[0] = 1;  
     dp[1] = 2;  
     return climbStairsHelper(n - 1, dp);  
   }  
   int climbStairsHelper(int n, vector<int>& dp) {  
     if(n == 0 || n == 1) {  
       return dp[n];  
     } else {  
       int ways = 0;  
       if(dp[n - 1] != 0) {  
         ways += dp[n - 1];  
       } else {  
         ways += climbStairsHelper(n - 1, dp);  
       }  
       if(dp[n - 2] != 0) {  
         ways += dp[n - 2];  
       } else {  
         ways += climbStairsHelper(n - 2, dp);  
       }  
       dp[n] = ways;  
       return ways;  
     }  
   }  
 };  

No comments: