黑马程序员技术交流社区

标题: 一道题,代码如何实现? [打印本页]

作者: 478883662    时间: 2015-11-10 09:27
标题: 一道题,代码如何实现?
28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?
代码如何实现?
作者: dai2686779    时间: 2015-11-10 09:31
6666666666666666666
作者: ln0491    时间: 2015-11-10 10:54
递归,慢慢写吧。。。。。。。。。
作者: JYcainiao    时间: 2015-11-10 12:56
有两种解法,如果老班不小气,可以先借瓶子再还瓶子的话是一种,如果老板小气的话不给借瓶子,又是一种
作者: JYcainiao    时间: 2015-11-10 12:58
本帖最后由 JYcainiao 于 2015-11-10 20:44 编辑

import java.util.Scanner;

public class heshui {

        /**
         * 3个空瓶子可以换一瓶水   有N个人,最少要买多少瓶水才能N个人都有水喝
         *
         * 两种思路: 1.不能借瓶子的
         *                                                         先有一个人买水,然后没三个人一组,前两个人买水,第三个人拿瓶子换水后,把空瓶子传递给下一组
         *                                          2.可以借瓶子的
         *                                                         三个人一组  两个人买水  第三个人找老班借个空瓶子   凑够三个换水喝,再把空瓶子还给老班
         */
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入有几个人要喝水?(老板愿意借给你一个瓶子)");
                int num = sc.nextInt();
                buy0(num);
               
                System.out.println("请输入有几个人要喝水?(老板不愿意借瓶子给你)");
                int num1 = sc.nextInt();
                buy1(num1);
        }
        //可以借瓶子的买法
        public static void buy0(int num) {
                int buy =  num / 3 * 2 + num % 3 ;                                //num / 3 是看有多少组, *2 是每组有两个人买水,第三个人借个瓶子换水喝完后,把空瓶子还回去;
                System.out.println("需要买" + buy + "瓶水,剩余空瓶子数为:" + num % 3);                        // num % 3  是不够3人的只能买水了
        }

        //不可以借瓶子的买法
        public static void buy1(int num) {
                int buy = (num-1) /3 * 2 + (num - 1) % 3 + 1;        // num - 1 是因为第一个人必须要买水(三个人买的水第四个人才能不买,还多一个空瓶子),
                                                                                                                                                //然后三人一组  两人买水,第三个人换水,在把空瓶子传给下一组
                System.out.println("需要买" + buy + "瓶水,剩余空瓶子数为:" + ((num - 1) % 3 + 1));
        }
}


作者: 大自然的搬运工    时间: 2015-11-10 13:02
JYcainiao 发表于 2015-11-10 12:56
有两种解法,如果老班不小气,可以先借瓶子再还瓶子的话是一种,如果老板小气的话不给借瓶子,又是一种 ...

此楼高见
作者: JYcainiao    时间: 2015-11-10 13:08
递归也可以实现的   方法没写  呵呵
作者: JYcainiao    时间: 2015-11-10 13:10
感觉递归没有这个直观




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