compute the hight of utopianTree

    private static final int ONE_YEAR_GROWTH_SUMMER_FACTOR=1;
    private static final int UTOPIANTREE_INITIALIZE_HEIGHT=1;
        /**
         * compute the hight of utopianTree
         * return hight: hight
         * parameter src n cycles: 0<= n <=60
         * 	1 year has 2 cycles :
         * 		spring get double meters height
         * 		summer get 1 meter height
         *
         * constraints:
         *  test cases:
         * 		1<= t <= 10
         *  cycles :
         *      0<= n <= 60
         *
         *  constraint height : initialize height 1 meter
         *
         *    Period  Height
         0          1
         1          2
         2          3
         3          6
         4          7
         5          14

         * @param srcNumCycle
         * @return
         */
        public static int utopianTree(int srcNumCycle) {
            if(srcNumCycle < 0 || srcNumCycle > 60){
                return 0;
            }
            int retVal=srcNumCycle%2;
            int yearTemp=srcNumCycle/2;
            int sumTotalHeight=UTOPIANTREE_INITIALIZE_HEIGHT;
            int plusFactorEvenSpring=0;
            int plusFactorEvenSummer=ONE_YEAR_GROWTH_SUMMER_FACTOR;
            int plusFactorOddSpring=0;
            int plusFactorOddSummer=ONE_YEAR_GROWTH_SUMMER_FACTOR;
            int plusFactorEven=0;
            int count=0;
            while(true){
                if(retVal==0){
                    int countEven=0;
                    while(true){
                        plusFactorEvenSpring=sumTotalHeight*2;
                        plusFactorEven=plusFactorEvenSpring+plusFactorEvenSummer;
                        sumTotalHeight+=plusFactorEven;
                        countEven++;
                        if(countEven>yearTemp){
                            break;
                        }
                    }
                }else{
                    int countOddEven=0;
                    while(true){
                        plusFactorOddSpring=sumTotalHeight*2;
                        int plusFactorOdd=plusFactorOddSpring+plusFactorOddSummer;
                        sumTotalHeight+=plusFactorOdd;
                        countOddEven++;
                        if(countOddEven>yearTemp){
                            break;
                        }
                    }
                    plusFactorOddSpring=sumTotalHeight*2;
                    sumTotalHeight+=plusFactorOddSpring;
                }
                int yearCount=0;
                if(retVal==0){
                    yearCount=yearTemp;
                }else{
                    yearCount=yearTemp+1;
                }
                count++;
                if(count>yearCount){
                    break;
                }
            }
            return sumTotalHeight;
        }

#打工人的工作餐日常##我在牛爱网找对象##职业发展规划如何回答##面试等了一周没回复,还有戏吗#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务