黑马程序员技术交流社区

标题: 瓶盖换瓶子的算法实现 [打印本页]

作者: PDH    时间: 2015-9-8 18:22
标题: 瓶盖换瓶子的算法实现
public class PingGaiPro {

        /**
         * 问题:有x个人买可乐喝,3个瓶盖可以换一瓶可乐,问需要至少买多少瓶可乐
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println(bottleSum(27));
                System.out.println(bottleSum_1(27));
        }
        //模仿一次一次的买可乐实现
        //思路:每次购买1瓶,达到3瓶进行一次兑换,循环,直到够每人一瓶
        public static int bottleSum(int x){
                int sum=0;  
                int temp=0;
                for(int i=1;i<=x;i++){  //模仿每个人分到一瓶可乐
                        temp++;
                        if(temp==3){   //如果手头的可乐达到了3瓶则sum不加,并清零temp
                                temp=0;
                                continue;
                        }
                        sum++;   //sum记录买了多少瓶
                }
                return sum;
        }
        //从总人数上面入手算出需要多少个
        //思路是:每三个人一组,买两瓶可乐,和老板借一瓶可乐,然后喝完,拿三个盖子换一瓶新可乐,然后还给老板,这样的话付出2瓶满足三个人
        public static int bottleSum_1(int x){
                return 2*x/3;  
        }


作者: PDH    时间: 2015-9-8 18:25
有不同思路欢迎切磋,共同进步
作者: PDH    时间: 2015-9-8 18:33
关于自己上面代码的优化,我刚看了一下,可以把bottleSum(int x)方法中的temp变量省掉,if语句改成if(i%3==0)  sum--;    这样就可以了。不过不容易理解了就,看来写代码是门艺术啊!
作者: PDH    时间: 2015-9-8 19:48
bottleSum_1(int x)方法中应该返回 return 2*x/3+x%3;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2