1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class Solution { public: static constexpr int SIZE = 46; int cache[SIZE]; int dp(int x) { if (cache[x]) return cache[x]; if (x <= 1) { cache[x] = dp(x - 1); return cache[x]; } cache[x] = dp(x - 1) + dp(x - 2); return cache[x]; } int climbStairs(int n) { std::fill(std::begin(cache), std::end(cache), 0); cache[0] = 1; return dp(n); } }; |