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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?(需写出分析思路)

6 个回复

倒序浏览
你就一瓶一瓶的买嘛。也就是从0开始一瓶一瓶的买
//首先定义一个实际花钱买到的可乐瓶数变量 a,也就是你达到目的最终到底是花多少钱
int a=0;
//再定义一个花钱买到的加空瓶兑换到的变量 b,也就是实际拿到手的可乐瓶数
int b=0;
//再设置一个要喝到的具体可乐瓶数,也就是题目的要求28个人要喝可乐。
int c=28
//由于不知道用一瓶一瓶这样买的方式具体多少次,所以采用while循环。
//当实际拿到手的可乐瓶数,也就是b,不超过28,我们就需要继续买。
while(b<=28){
    //只要没到28,我就买一次
    a++;
    b++;
    //如果实际拿到手的可乐瓶数满足三瓶,我就去换一瓶
    if(b%3==0){
        b++;
    }
}
//最后打印花了多少钱即可
System.out.println(a);
回复 使用道具 举报
不是很严谨,凑合着看吧
回复 使用道具 举报
先换后买,不然有问题
回复 使用道具 举报
[Java] 纯文本查看 复制代码
public static void main(String[] args) {
		int count = 28;//一共28瓶可乐
		int kele = 0;  //从0开始购买
		int pinggai = 0;//瓶盖数量
		for (int i = 1; kele <= count; i++) {
			kele++;//每买一次,可乐多一瓶     i=购买次数
			pinggai++;//瓶盖多一个
			if (pinggai / 3 == 1) { //当累计的瓶盖达到3个可以兑换一瓶,
 				kele++; 			//这个时候可乐数量+1,
 				pinggai -= 2;		//瓶盖数量-2,,因为多了瓶可乐就多了个瓶盖  -3再+1 
			}
			if (kele == 28) {       //可乐慢28,打印出买了多少瓶可乐 i
				System.out.println("一共买了" + i + "瓶可乐");
			}
		}
	}
回复 使用道具 举报
[Java] 纯文本查看 复制代码
	public static void main(String[] args) {

		int persons = 28;
		buyCoke(persons);

	}

	/**
	 * 通过人数判断买多少瓶可乐刚刚好
	 * @param persons 需要可乐的人数
	 */
	public static void buyCoke(int persons) {
		int buy = 0;
		int pinggai = 0;
		for (int i = 1; i <= persons; i++) {
			buy++;
			pinggai++;
			// 当一次性买多少瓶的 + 瓶盖可置换的可乐 = 需求人数 程序终止
			if ((buy + exchange(pinggai)) == persons) {
				System.out.println(persons + "人每人一瓶可乐,一共需要买" + buy + "瓶");
				return;
			}
		}

	}

	/**
	 * 通过瓶盖的数量确认可以换多少瓶可乐
	 * @param pinggai 瓶盖数量
	 * @return 可置换可乐数量
	 */
	public static int exchange(int pinggai) {
		// 0.1.2个瓶盖换不了可乐
		if (pinggai == 0 || pinggai == 1 || pinggai == 2) {
			return 0;
		} else {
			int Coke = pinggai / 3;// 3瓶盖 可以兑换 1可乐+1瓶盖,
			int left = pinggai % 3;// 这是置换可乐后剩余的瓶盖
			return Coke + exchange(Coke + left);// 返回置换的可乐数量
			// ↑将剩余的瓶盖 和 置换可乐后产生的瓶盖 再用于置换可乐,当瓶盖不足以换可乐 就O了
		}
	}
回复 使用道具 举报
yuanxianzhi 发表于 2016-8-27 11:08
[mw_shl_code=java,true]
        public static void main(String[] args) {

哦,好像挺对的;;;;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马