酒干倘卖无之递归算法

酒干倘卖无之递归算法

还记得那首老歌么,酒干倘卖无,它蕴含着一个多么辛酸的故事。生活不易,勤俭节约资源回收再利用吧!

孩子的寒假作业还没做吧,里面一定有这样让大人都蒙圈的题目,计算机的酒量那是秒杀千百万瓶!

题目:

  • 啤酒2元1瓶,4个瓶盖换一瓶,2个空瓶换1瓶
  • 问:100块钱可以喝多少瓶

递归算法实现:

#define N   50
int total = 0;
int round = 0;

void beer_bottle_lid(int beer, int bottle, int lid)
{
    round++;
    printf ("第%d轮:喝了%d瓶酒,剩下%d个空瓶子,剩下%d个瓶盖子\n", round, beer, bottle, lid);

    int beer1 = (bottle)/2;
    int beer2 = (lid)/4;
    int bot = (bottle)%2;
    int li = (lid)%4;

    int new_beer = (beer1+beer2);
    int new_bottle = (new_beer+bot);
    int new_lid = (new_beer+li);

    total += new_beer;  

    if (new_beer == 0){
        return;
    }

    beer_bottle_lid(new_beer, new_bottle, new_lid);

}
//---------------------------
int main(void)
{
    total += N;
    beer_bottle_lid(N, N, N);

    printf ("\n\r总共喝了瓶酒,也是醉了!\n", total);
    return 0;
}

测试结果

第1轮:喝了50瓶酒,剩下50个空瓶子,剩下50个瓶盖子
第2轮:喝了37瓶酒,剩下37个空瓶子,剩下39个瓶盖子
第3轮:喝了27瓶酒,剩下28个空瓶子,剩下30个瓶盖子
第4轮:喝了21瓶酒,剩下21个空瓶子,剩下23个瓶盖子
第5轮:喝了15瓶酒,剩下16个空瓶子,剩下18个瓶盖子
第6轮:喝了12瓶酒,剩下12个空瓶子,剩下14个瓶盖子
第7轮:喝了9瓶酒,剩下9个空瓶子,剩下11个瓶盖子
第8轮:喝了6瓶酒,剩下7个空瓶子,剩下9个瓶盖子
第9轮:喝了5瓶酒,剩下6个空瓶子,剩下6个瓶盖子
第10轮:喝了4瓶酒,剩下4个空瓶子,剩下6个瓶盖子
第11轮:喝了3瓶酒,剩下3个空瓶子,剩下5个瓶盖子
第12轮:喝了2瓶酒,剩下3个空瓶子,剩下3个瓶盖子
第13轮:喝了1瓶酒,剩下2个空瓶子,剩下4个瓶盖子
第14轮:喝了2瓶酒,剩下2个空瓶子,剩下2个瓶盖子
第15轮:喝了1瓶酒,剩下1个空瓶子,剩下3个瓶盖子

总共喝了195瓶酒,也是醉了
时间: 2024-10-13 05:27:58

酒干倘卖无之递归算法的相关文章

Design Patterns 4 酒干倘卖无---抽象工厂模式AbstractFactory

抽象工厂模式AbstractFactory 抽象工厂模式:提供一个创建产品的接口来负责创建相关或依赖的对象,而不具体明确指定具体类. 抽象工厂对于系列产品的变化支持 “开放——封闭”原则(指的是要求系统对扩展开放,对修改封闭),扩展起来非常简便,但对于添加新产品这种情况就不支持”开放——封闭 “原则. Design Patterns 4 酒干倘卖无---抽象工厂模式AbstractFactory,布布扣,bubuko.com

HTML第二篇

1>压缩文件格式:使用.zip格式较好 2>charset(字符集)  国内最新字符集格式为:gb18030   国际上通用的字符集是:UTF-8 3>添加图片 <img src="path" alt="text" title="text" width="x" height="y"/> 4>path路径: 绝对路径:指文件在硬盘上真是存在的路径. eg: <body

HTML5 标签audio添加网页背景音乐代码

<head> <meta http-equiv="Content-Type" name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,user-scalable=no"> <meta charset="utf-8"> <meta name=&

2016年12月 极高的人声表现 征服挑剔的耳朵《人声斗机王》2CD WAV分轨

专辑名称:人声斗机王 2CD 专辑艺人:群星 唱片公司:深圳音像公司 发行时间:2016年12月 资源格式:UPDTS-WAV分轨 专辑简介: 极品靓声王精品人声,音色悦耳.悠扬.细致,乐器的质感鲜明无比,仿佛伸手可触.加上充沛的能量感,使音乐听起来更具生命力,临场感浓郁,舞台立体浮凸的在眼前呈现,聆听者彷佛坐在圆桌旁,活生的现场感传神十足.然就是这个有着极高的人声表现和录音品质的HIFI音乐,征服挑剔的耳朵 曲目 专辑曲目CD101.酒干倘卖无--孙露02.我真的好难过--小骆驼03.你走你的

iOS学习笔记23-音效与音乐

一.音频 在iOS中,音频播放从形式上能够分为音效播放和音乐播放. * 音效: * 主要指一些短音频的播放,这类音频一般不须要进行进度.循环等控制. * 在iOS中.音效我们是使用AudioToolbox.framework框架实现. * 音乐: * 主要指一些较长的音频,通常须要对播放进行精确控制. * 在iOS中,音乐我们是使用AVFoundation.framework框架实现. 二.音效 AudioToolbox.framework框架是一套基于C语言的框架 它的实现原理是将短音频注冊到

《无码的青春》第七章 御姐

之前我们各有各的故事,各有各的守护,然而今天却成了同一类人,失去了各自的女神,失去了自己的信仰,没有了牵挂,也不再需要对什么人负责.四个单身男人,在这个浮华的城市里尽情的释放着过剩的荷尔蒙.周末我们会聚在道哥的酒吧里,在浮光掠影的酒精和静静的音乐中沉沦,乃至迷失了自我.谈不上堕落,我们只是不再属于某一个女人,于是,我们让自己属于所有的女人.终有一天,我们会发现自己变了,甚至变成了自己曾经最讨厌的人的模样.当天空闭上眼睛时,便迎来了夜的黑,但是这黑夜从来不是永恒的,总会有那么一束阳光吻醒沉睡的天空

茶酒实体店转型新零售,如何实现持续盈利

我不知道大家是否和我一样,忙碌了一天,有空歇息寻思寻思的时候都会习惯性的泡杯茶,或者是喝小杯红酒,既不失情调,也有那种能让人静下心来思考的氛围.我家的茶酒基本上都是跟我一个朋友买的,本身就熟,他也好客善谈,因此很多时候回头客可以说比正常的客源还要多. 生意好的时候,每天大概都能有100多个客户,即便是少,也能保持在20-40个的样子,而且茶酒这一块的东西,可以说也是日常不可欠缺的,更是拜访亲朋好友的佳礼. ----分割线---- 有回我跟他说:其实你不用开店也可以赚钱的. 他很诧异的看着我:老兄

UVa 11054 Gergovia的酒交易

https://vjudge.net/problem/UVA-11054 题意:直线上有n个等距的村庄,每个村庄要么买酒,要么卖酒.设第i个村庄对酒的需求为ai,ai>0表示买酒,ai<0表示卖酒,所有村庄供需平衡.把k个单位的酒从一个村庄运到相邻村庄需要k个单位的劳动力.计算所需最少劳动力. 思路:从左边第一个开始分析,如果它卖酒,则可以把它全卖给第二个村庄,如果它买酒,可以从第二个村庄那里买酒,依次下去分析第二个直到最后一个村庄.这样的话每次买酒和卖酒的距离都是最短的,劳动力肯定也是最少的

UVA - 11054 Wine trading in Gergovia (Gergovia 的酒交易)(贪心+模拟)

题意:直线上有n(2<=n<=100000)个等距的村庄,每个村庄要么买酒,要么卖酒.设第i个村庄对酒的需求为ai(-1000<=ai<=1000),其中ai>0表示买酒,ai<0表示卖酒.所有村庄供需平衡,即所有ai之和等于0.把k个单位的酒从一个村庄运到相邻村庄需要k个单位的劳动力.计算最少需要多少劳动力可以满足所有村庄的需求. 分析:从最左面的村庄考虑,不管他是买酒还是卖酒,相对于他的相邻村庄都会有a0的运输量,所以运输量不断累加或抵消,一直算到最右边村庄即可.