换酒瓶的解题思路

前言

假设有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;
    }
}
转载请注明出处,掌声送给社会人

猜你喜欢

转载自blog.csdn.net/SCDN_CP/article/details/85319756