汽水瓶问题

喝汽水,1瓶汽水1元,2个空瓶可以换1瓶汽水,给20元,可以换多少汽水。

每次喝的汽水瓶数等于前面喝的瓶数加上总数的一半再加上总数模2的数


元(瓶)兑换
剩下空瓶 换得
1 20 0 10
2
10
0
5
3 5 1 2
4 2 0 1
5 1 1 1(两次空瓶可换一次)

class Drink {
    public static void main(String[] args) {
        System.out.println(drink(20, 0));
    }

    public static int drink(int money, int bottle) {
        int empty = money + bottle;
        if (empty / 2 == 0) {
            return money;
        }

        return money + drink(empty / 2, empty % 2);
    }
}

进阶版

1瓶汽水1元,2个空瓶换1瓶汽水,3个瓶盖换一瓶汽水,给20元,可以换多少汽水。

class Drink {
    public static void main(String[] args) {
        System.out.println(drink(20, 0, 0));
    }

    private static int drink(int money, int bottle, int cap) {
        bottle = money + bottle;
        cap = money + cap;
        if (bottle / 2 + cap / 3 == 0) {
            return money;
        }
        return money + drink(bottle / 2 + cap / 3, bottle % 2, cap % 3);
    }
}



全部评论

相关推荐

牛客50327486...:腾讯官方:我们没有人机对局
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
08-20 19:41
那一天的Java_J...:简历完全流水账,学生思维很严重,还有很大的优化空间,可以多看看牛客的简历。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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