黑马程序员技术交流社区
标题:
一道题,代码如何实现?
[打印本页]
作者:
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