题解 | #汽水瓶#

汽水瓶

https://www.nowcoder.com/practice/fe298c55694f4ed39e256170ff2c205f

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n, count;
        while ((n = in.nextInt()) != 0) {
            count = 0;
            while (n > 2) {
                // 未参与兑换的瓶子 e.g. 四个空瓶 三个空瓶兑换一瓶汽水 还剩一个未参与
                int r = n % 3;
                // 三个空瓶兑换一瓶汽水 那么兑换了n瓶汽水
                int q = n / 3;
                // 累加兑换
                count += q;
                // 兑换的瓶子(喝完的空瓶子) + 未参与兑换的瓶子 = 下一轮兑换的瓶子
                n = r + q;
            }
            // 如果最后剩两个瓶子 还能再兑换一个(借一法)
            System.out.println(n == 2 ? count + 1 : count);
        } 
    }
}
上面是朴素解法 在题解里看到了 贪心思想的解法 很妙
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n;
        while ((n = in.nextInt()) != 0) {
            System.out.println(n / 2);
        } 
    }
}


#华为笔试#
全部评论

相关推荐

11-24 11:23
门头沟学院 C++
点赞 评论 收藏
分享
10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
头像
11-18 16:08
福州大学 Java
影流之主:干10年不被裁,我就能拿别人一年的钱了,日子有盼头了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务