本文已收录至 Github《小白学算法》系列:https://github.com/vipstone/algorithm
提示:
X 和 Y 的取值如下:
1 <= X <= 100 2 <= Y <= 100 Y 值不固定,随机抽取。
输入:X = 9, Y = 3
输出:13
解释:你可以用 3 个空酒瓶兑换 1 瓶酒。所以最多能喝到 9 + 3 + 1 = 13 瓶酒。
示例 2:
输入:X = 15, Y = 4
输出:19
解释:你可以用 4 个空酒瓶兑换 1 瓶酒。所以最多能喝到 15 + 3 + 1 = 19 瓶酒。
示例 3:
输入:X = 5, Y = 5
输出:6
示例 4:
输入:X = 2, Y = 3
输出:2
while(能朝给定总目标前进一步){利用可行的决策,求出一个可行解元素;}由所有解元素组合成问题的一个可行解。
// 贪心1:用 + 和 - 实现class Solution {public int numWaterBottles(int numBottles, int numExchange) {// 最大酒瓶数int total = numBottles;// 有酒瓶就兑换while (numBottles >= numExchange) {// 执行一轮兑换numBottles -= numExchange;++total;// 兑换一次多一个酒瓶++numBottles;}return total;}}
// 贪心 2:用 / 和 % 实现class Solution {public int numWaterBottles(int numBottles, int numExchange) {// 总酒瓶数int total = numBottles;// 有酒瓶就兑换while (numBottles >= numExchange) {// 最多可兑换的新酒int n = numBottles / numExchange;// 累计酒瓶total += n;// 剩余酒瓶(剩余未兑换 + 已兑换喝掉的)numBottles = numBottles % numExchange + n;}return total;}}
更多精彩推荐
☞全网销售额超 2.67 亿!德施曼连续 5 年蝉联双11全网智能锁销冠
☞苹果发布首款 Mac 自研芯片 M1,贯通生态快人一步☞腾讯竟然是这样招人的,哈哈哈哈哈
点分享
点点赞
点在看