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