文档章节

递归:兑换问题

Barudisshu
 Barudisshu
发布于 2015/05/26 14:40
字数 327
阅读 236
收藏 11
/**
 * 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买
多少瓶可乐?(需写出分析思路)
 * 分析:解决问题需要进行分步进行。
 * 1. 首先写出n瓶可以兑换出多少瓶
 * 2. 再用循环求出1...n瓶中,刚好满足条件的个数。
 *
 * @author Barudisshu
 */
public class TestDrink {

    public static void main(String[] args) {

        int people = 28;
        int change = 3;
        int buys = count(people, change, 0);
        int got = exchange(buys,change,0);
        System.out.println(people + "人需要买" + buys+"瓶,并且可以兑换"+got+"瓶");
    }

    /**
     * 可以兑换的个数
     */
    public static int exchange(int bots, int con, int count) {
        if (bots < con) {           // 如果小于置换条件
            count = 0;
        } else if (bots == con) {   // 刚好等于置换条件
            count = 1;
        } else {                    // 大于置换条件
            if ((bots / con + bots % con) >= con) {     // 可以再次置换
                count = bots / con + exchange(bots / con + bots % con, con, count);
            } else  // 不可以再次置换
                count = bots / con;
        }
        return count;
    }

    /**
     * 获得实际个数
     */
    public static int count(int people, int con, int count) {
        int i = 0;
        while (true) {
            int total = i + exchange(i, con, count);
            if (total >= people)
                break;
            i++;
        }
        return i;
    }

}



© 著作权归作者所有

Barudisshu
粉丝 27
博文 62
码字总数 70723
作品 0
茂名
程序员
私信 提问
由找零钱说起……(2011-01-11)

丢人了,Projece Euler 上的第 31 问做了两天都还没搞定。不难啊,可脑子就是想不清楚,唉,老矣。 题目是这样的: 现有面值为1分、2分、5分、10分、20分、50分、1磅(100分)、2磅(200分)...

Pope怯懦懦地
2017/12/09
0
0
2017-05-06

学习内容:根据商户后台的商品数据问题及管理后台的重写积分兑换码功能 完成内容:积分兑换码功能重写 商户后台的商品数据回显 工作问题:积分兑换码修改成两张数据表 新增积分规则 勾选数据...

Full_Session
2017/05/06
3
0
【去中心化交易】bancor协议初体验

引言 早在几个月前,在线下的活动中就听周朝晖老师讲区块链的下一个趋势,他提到了去中心化交易和兑换,而且还特别提到了两个标的,一个是0x协议、一个是bancor协议。 在经过自己独立思考之后...

三月既望
2018/09/03
0
0
OSC 积分兑换第一弹 - 阿里云代金券(2012/12/17 更新)!

1. 为什么要兑换阿里云代金券? 这次提供的是68元代金券,也就是你出1元就能使用阿里云主机一个月。就当体验啦! 有效期:代金券是动态生成的,你收到代金券后三天之内有效。 2. 如何兑换阿里...

虫虫
2012/10/26
9.6K
145
阿里云代金券3月来袭!!

代金券细则 1. 为什么要兑换阿里云代金券? 这次提供的是68元代金券,也就是你出1元就能使用阿里云主机一个月。就当体验啦! 有效期:截止到2013-03-31 23:59:59 2. 如何兑换阿里云代金券? ...

油麻菜籽果
2013/03/04
3.4K
25

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
今天
4
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
今天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
今天
4
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
今天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部