编程题分享:假设你手里有20元,一瓶饮料2元,两个空瓶可以换1元,请问最多能喝到多少瓶饮料?

题目:假设你手里有 20 元,一瓶饮料 2 元,两个空瓶可以换 1 元,请问最多能喝到多少瓶饮料?

  • 思路分析:

重点: “2元可买一瓶饮料,4个空瓶可换一瓶饮料”

     ①. 20元买了【10】瓶
     ②. 10个空瓶可以换【2】瓶饮料,且剩2个空瓶
     ③. 此时喝完,一共有4个空瓶,还可以换【1】瓶饮料
     ④. 最后剩下1个空瓶,手里再无剩余
 
     统计所得,一共可以喝到【13】瓶饮料
  • 代码实现

此处以鄙人熟悉的 PHP 语言,整理实现源码如下:

	/**
     * @param int $amount 金额
     * @return array 可以喝到的饮料数,最后剩余的空瓶数
     */
    public function buyFunc($amount = 0){
        //可以喝到的饮料数目,【整数】
        $drink_num = intval($amount/2);
        //空瓶子数目
        $empty_num = $drink_num;

        while ($empty_num >= 4){
            //空瓶子可以换的饮料数【整数】
             $empty_tag = intval($empty_num/4);
             //未使用的空瓶子数目
             $empty_num = $empty_num%4;

             $drink_num+=$empty_tag;
             $empty_num += $empty_tag;
        }
        return [$drink_num,$empty_num];
    }
  • 测试代码:
list($drink_num,$empty_num) = $this->buyFunc(24);
var_dump($drink_num);
var_dump($empty_num);
  • 输出结果如下: (代表可以喝到【13】瓶饮料,最后剩下【1】个空瓶)

int(13) int(1)

发散思维

其实,以我们的经验,是遇到过借空瓶换饮料,最后再还对方空瓶的答案

  • 比如,这个题目问的是,手里有24元,运行的答案为 int(15) int(3)
    那么,可能有的回答就是:“最后借对方一个空瓶,凑齐4个空瓶换一瓶饮料,喝完再还对方一个空瓶,那么最多可以喝到16瓶饮料”
  • 对于面试考察来说,也不失为一个可以展示自我思维活跃的一面,仅做参考 …

附录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值