题解 | #汽水瓶#

汽水瓶

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);
        } 
    }
}


#华为笔试#
全部评论

相关推荐

派派Emma:公司是在缅北吗
点赞 评论 收藏
分享
08-01 11:19
电气工程师
我懒羊羊觉得没问题:写的太学生化了,像作文一样,很难看出你和岗位的匹配度
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务