换酒瓶的解题思路

前言

假设有m元钱,n个空瓶可以换1瓶酒,y个瓶盖可以换一瓶酒,请问可以喝多少瓶(在不借助外力的情况下)

 

这是一道经典的数学题,其实结题思路很多,其实还是分成两种场景,

一、老王住在隔壁,每个月就这么点买酒钱,喝完够酒瓶或者瓶盖能够换酒就去隔壁换

二、老王住的很远,每个月就这么点买酒钱,喝完所有手上的酒才去换

 

第一种场景的实现方式

public int getDrink(int money) {
    // 记录总共喝掉的瓶数
    int p = 0;
    // 记录空瓶数
    int kp = 0;
    // 记录瓶盖数
    int g = 0;
    for (int i = money / 2; i > 0; i--)// 一瓶一瓶的喝
    {
        // 喝一瓶,多一个空瓶子
        kp++;
        // 多一个瓶盖
        g++;
        if (kp == 2)// 如果空瓶>2
        {
            kp = 0;
            i++; // 瓶数+1
        }
        if (g == 4)// 如果瓶盖>4
        {
            g = 0;
            i++; // 瓶数+1
        }
        // 记录喝掉的瓶数
        p++;
    }
    return p;
}

场景二的实现方式

public class BottleTest {

    /**
     * 
     * @param m 金额
     * @param x 单价
     * @param n 空瓶换酒需要酒瓶个数
     * @return
     */

    public static int getMaxBottleNum(int m, int x, int n) {
        // 最初可以买到酒的瓶数
        int bottleNum = m / x;
        // 计算可以喝到酒的总瓶数
        int result = bottleNum + bottleNum / (n - 1);
        // 返回结果
        return result;
    }
}
转载请注明出处,掌声送给社会人

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值