题目: https://leetcode.com/problems/climbing-stairs/
思路:
递归递归,但是跟斐波那契数那个一样,要保存一些中间算出来的结果备用,不然会超时!
代码:
class Solution { public: map<int, int> resultMap; int climbStairs(int n) { if(n == 2){ // 2 or 1+1, two ways return 2; } else if(n == 1) { return 1; } else if (n == 0) { return 0; } else { int c_n1, c_n2; if(resultMap.count(n-1) > 0) c_n1 = resultMap[n-1]; else { c_n1 = climbStairs(n-1); resultMap[n-1] = c_n1; } if(resultMap.count(n-2) > 0) c_n2 = resultMap[n-2]; else { c_n2 = climbStairs(n-2); resultMap[n-2] = c_n2; } return c_n1 + c_n2; } } };