//recursive solution int climbStairs(int n) { // will run outa memory after n = 40 if (n <= -1) return 0; if (n < 3) return n; return climbStairs(n - 1) + climbStairs(n - 2); }
int climbStairs2(int n, std::map<int, int> tmpMap) { if (n < 0) return 0; if (n <= 2) return n; if (tmpMap.find(n) == tmpMap.end()) tmpMap[n] = climbStairs(n-1) + climbStairs(n-2); return tmpMap[n]; }
void problem(int n){ switch(n){ case 123:{ //int a[] = {-2 , 1 , -3 , 4 , -1 , 2 , 1 , -5 , 4}; int a[] = {1 , 2 , 3 , 0 , 2}; int len = sizeof(a) / sizeof(int); vector<int> in(a , a + len); cout << maxProfit2(in) << endl; } break; case 121:{ //int a[] = {-2 , 1 , -3 , 4 , -1 , 2 , 1 , -5 , 4}; int a[] = {1 , 2 , 3 , 0 , 2}; int len = sizeof(a) / sizeof(int); vector<int> in(a , a + len); cout << maxProfit(in) << endl; } break; case 279:{ cout << numSquares(12) << endl; cout << numSquares(13) << endl; } break; case 309:{ //int a[] = {-2 , 1 , -3 , 4 , -1 , 2 , 1 , -5 , 4}; int a[] = {1 , 2 , 3 , 0 , 2}; int len = sizeof(a) / sizeof(int); vector<int> in(a , a + len); cout << maxProfit_cooldown(in) << endl; } break; case 343:{ cout << integerBreak(5) << endl; cout << integerBreak(10) << endl; } break; case 338:{ showVector(countBits(5)); showVector(countBits(15)); } break; case 70:{ cout << climbStairs(5) << endl; cout << climbStairs(15) << endl; cout << climbStairs(8) << endl; } break; case 53:{ //int a[] = {-2 , 1 , -3 , 4 , -1 , 2 , 1 , -5 , 4}; int a[] = {-2 , -1 , -3}; int len = sizeof(a) / sizeof(int); vector<int> in(a , a + len); cout << maxSubArray(in) << endl; } break; default: break; } }
int climbStairs(int n) { if(n == 0 || n == 1) return 1; int first_half = n&1 ? (n-1)>>1 : n>>1; int second_half = n&1 ? (n+1)>>1 : n>>1; //using one step OR two steps from first half to second half return climbStairs(first_half)*climbStairs(second_half) + climbStairs(first_half - 1)*climbStairs(second_half - 1); }
int climbStairs(int n) { // Start typing your C/C++ solution below // DO NOT write int main() function if (n<=2) {return n;} else { return climbStairs(n-1) + climbStairs(n-2); } }
int climbStairs(int n) { if(n<=0) return 0; else if(n==1) return 1; else if(n == 2) return 2; return climbStairs(n-1) + climbStairs(n-2); }
int climbStairs(int n) { if(res[n]!= 0) { return res[n]; } if(n == 0 || n == 1)return 1; else { res[n] = climbStairs(n - 1) + climbStairs(n - 2); return res[n]; } }
int main(int argc, char *argv[]) { for (int i = 0; i < 90; i++) printf("Solutios for %d are %d\n", i, climbStairs(i)); return 0; }
inline int climbStairs(int n) { // Start typing your C/C++ solution below // DO NOT write int main() function if (n <= 0) return 0; if (n == 1) return 1; if (n == 2) return 2; return climbStairs(n-1) + climbStairs(n-2); }
int main(void){ int n; while(scanf("%d",&n)!=EOF){ int result=climbStairs(n); printf("%d\n",result); } }
int main(void){ int steps; printf("Input the steps of stair:\n"); scanf("%d", &steps); int nsteps = climbStairs(steps); printf("%d steps to the top\n", nsteps); return 0; }
int climbStairs2(int n) { if ( n <= 0 ) { return 0; } else if( n == 1 ) { return 1; } else if( n == 2 ) { return 2; } else { return climbStairs(n-1) + climbStairs(n-2); } }
int main() { int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60, -1}; for (int i = 0; -1 != arr[i]; i++) { printf("%d, %d\n", arr[i], climbStairs(arr[i])); } exit(0); }
int climbStairs(int n) { if(n <= 0) return 1; it = memory.find(n); if(it != memory.end()) return it->second; int result; result = climbStairs(n-1); if(n >= 2) result += climbStairs(n-2); memory.insert(make_pair(n, result)); return result; }
int main(int argc, char **argv) { int val[] = {1111221,1,2,3,4,5,6,9,717,19,21,22,23,24,25}; int i; int ways; for(i = 0; i < 15; i++) { ways = climbStairs(val[i]); printf("%d : %d \n", val[i], ways); } return 0; }
int climbStairs(int n) { static vector<int> result{0}; if (n == 0) return 0; if (n == 1) return 1; if (n == 2) return 2; if (result.size() < n) { result.resize(n, 0); } if (result[n-1] != 0) { return result[n-1]; } else { result[n-1] = climbStairs(n - 2) + climbStairs(n - 1); } return result[n-1]; }
int main(int argc, const char * argv[]) { std::cout<<climbStairs(1)<<std::endl; std::cout<<climbStairs(2)<<std::endl; std::cout<<climbStairs(3)<<std::endl; std::cout<<climbStairs(4)<<std::endl; //5 std::cout<<climbStairs(5)<<std::endl; //8 std::cout<<climbStairs(35)<<std::endl; //14930352 std::cout<<INT_MAX<<std::endl; return 0; }
int main(){ int result = climbStairs(3) ; printf("%d\n",result) ; return 0; }
int climbStairs(int n) { if (n <= 2 ) return n; else return (climbStairs(n-1) + climbStairs(n-2)); }
//Time too long int climbStairs2(int n) { if (n<=3) return n; return climbStairs(n-1) + climbStairs(n-2); }
int climbStairs(int n) { if (n == 0) return dp[0] = 1; if (n == 1) return dp[1] = 1; if (dp[n] != 0) return dp[n]; return dp[n] = climbStairs(n - 1) + climbStairs(n - 2); }
int climbStairs(int n) { if (n < 0) return 0; if (n <= 2) return n; return climbStairs(n-1) + climbStairs(n-2); }