前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >编程题分享:假设你手里有20元,一瓶饮料2元,两个空瓶可以换1元,请问最多能喝到多少瓶饮料?

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

作者头像
泥豆芽儿 MT
发布2023-10-16 19:18:39
1640
发布2023-10-16 19:18:39
举报
文章被收录于专栏:木头编程 - moTzxx

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

  • 思路分析:

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

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

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

代码语言:javascript
复制
	/**
     * @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];
    }
  • 测试代码:
代码语言:javascript
复制
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瓶饮料”
  • 对于面试考察来说,也不失为一个可以展示自我思维活跃的一面,仅做参考 …
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 发散思维
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档