blob: 143eeb32e6abee87a7b47aac343d6bf0bafdb626 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include <stdlib.h>
int climbStairsImpl(int n, int* cache) {
if (n == 0) return 1;
if (n < 0) return 0;
if (cache[n] > 0) return cache[n];
int ret = climbStairsImpl(n-1, cache) + climbStairsImpl(n-2, cache);
cache[n] = ret;
return ret;
}
int climbStairs(int n) {
int *cache = malloc(sizeof(int) * (n+1));
return climbStairsImpl(n, cache);
}
|