本帖最后由 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));
}
}
|