Example #1
0
    //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);

    }
Example #2
0
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];
}
Example #3
0
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];
     }
 }
Example #8
0
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;
}
Example #9
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);
        
    }
Example #10
0
int main(void){
	int n;
	while(scanf("%d",&n)!=EOF){
		int result=climbStairs(n);
		printf("%d\n",result);
		
	}
} 
Example #11
0
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;
}
Example #12
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);
	    }
    }
Example #13
0
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);
}
Example #14
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;
 }
Example #15
0
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;
}
Example #16
0
File: 70.cpp Project: strangemk2/oj
    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];
	}
Example #17
0
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;
}
Example #18
0
int main(){
	int result = climbStairs(3) ;
	printf("%d\n",result) ;
	return 0;
}
Example #19
0
 int climbStairs(int n) {
     if (n <= 2 )
         return n;
     else 
         return (climbStairs(n-1) + climbStairs(n-2));  
 }
Example #20
0
 //Time too long
 int climbStairs2(int n) {
     if (n<=3) return n;
     return climbStairs(n-1) + climbStairs(n-2);
 }
Example #21
0
 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);
 }
Example #22
0
int climbStairs(int n) {
    if (n < 0) return 0;
    if (n <= 2) return n;
    return climbStairs(n-1) + climbStairs(n-2);
}