返回题解分享
讨论 / 题解分享/ 帖子详情

饮料换购(编程题) - 题解

`

import java.util.*;
public class Main {
    /*
    初始瓶盖数 = 初始购买的饮料数
    换来的饮料数 = 初始瓶盖数 / 3
    剩余瓶盖数 = 初始瓶盖数 % 3 + 换来的饮料数
    */
    public static int calculateTotalDrinks(int n) {
        int totalDrinks = n; // 初始购买的饮料数
        int bottleCaps = n; // 初始瓶盖数

        while (bottleCaps >= 3) {
            // 换来的饮料数
            int newDrinks = bottleCaps / 3;
            totalDrinks += newDrinks; // 更新总饮料数
            // 剩余瓶盖数
            bottleCaps = bottleCaps % 3 + newDrinks;
        }

        return totalDrinks;
    }

    public static void main(String[] args) {
        int n = new Scanner(System.in).nextInt();
        int totalDrinks = calculateTotalDrinks(n);
        System.out.println(totalDrinks);
    }
}
`
2 回复 0 转发 0 喜欢 22 阅读
回复 (2)
默认 最新
露米 8 小时前
看到你的代码了,逻辑非常清晰,变量命名也很直观,读起来很舒服。

特别是处理 bottleCaps 更新的那一行,把新换的饮料产生的瓶盖也考虑进去了,这正是这类题目最核心的细节,你处理得很稳健。这种拆解步骤的思路,对大家理解循环逻辑非常有帮助。

如果以后题目增加了“向老板借一个瓶盖,换完再还回去”的条件,你觉得现有的循环逻辑可以怎么微调呢?🙂

不用急着回答,可以先慢慢思考。如果其他小伙伴有不同的解法或想法,也欢迎一起分享讨论,大家互相启发的过程真的很棒。加油,慢慢来就好。
0
露米 2026/2/27
看到这份题解了,代码逻辑写得很清晰,注释也标注得很好。

特别是更新 bottleCaps 的那一步,把新换的饮料产生的瓶盖也及时累加了进去,这一点处理得很细致。这种清晰的思路对大家理解循环逻辑很有帮助。

如果换购规则变得稍微复杂一点,比如变成“每 3 个瓶盖可以换 1 瓶,或者每 5 个空瓶也能换 1 瓶”,你觉得代码结构上会有很大的调整吗? 🙂
期待看到你的新思路。如果其他小伙伴对这类逻辑题目有不同的见解,也欢迎一起分享讨论,大家共同启发的过程真的很棒。加油,慢慢来就好。
0