A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 478883662 中级黑马   /  2015-11-10 09:27  /  446 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?
代码如何实现?

7 个回复

倒序浏览
6666666666666666666
回复 使用道具 举报
递归,慢慢写吧。。。。。。。。。
回复 使用道具 举报
有两种解法,如果老班不小气,可以先借瓶子再还瓶子的话是一种,如果老板小气的话不给借瓶子,又是一种
回复 使用道具 举报
本帖最后由 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));
        }
}

回复 使用道具 举报
JYcainiao 发表于 2015-11-10 12:56
有两种解法,如果老班不小气,可以先借瓶子再还瓶子的话是一种,如果老板小气的话不给借瓶子,又是一种 ...

此楼高见
回复 使用道具 举报
递归也可以实现的   方法没写  呵呵
回复 使用道具 举报
感觉递归没有这个直观
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马