在博客园一篇文章末尾看到一个有趣的数学问题,据说是小学4年级的题目,摘引如下:

一只小猴摘了300个香蕉,需要搬回家,每次最多搬100个。小猴离家100米,它每走1米,都需要吃掉1个香蕉来补充能量,请问它最多能够搬回家多少个?

思考了好一会,写了个小程序模拟这一过程:

$bananas = 300;

for($i = 1; $i <= 100; $i++)

{

// 前200~300个的时候,每一米消耗5个,可以走20米

if($bananas > 200)

$bananas -= 5;

// 100~200个的时候每一米消耗3个,可以走33米,也(100+99)走了53米

else if($bananas > 101)

$bananas -= 3;

// 最后还有101个,接下来就可以带100个走不到47米(1个可以抵消0.33米以下),所以100-47+1=54个

else

$bananas--;

echo '剩余香蕉数:'.$bananas.',剩余路程:'.(100 - $i).'

';

}

echo $bananas;

程序运行结果:

剩余香蕉数:295,剩余路程:99

剩余香蕉数:290,剩余路程:98

剩余香蕉数:285,剩余路程:97

剩余香蕉数:280,剩余路程:96

剩余香蕉数:275,剩余路程:95

剩余香蕉数:270,剩余路程:94

剩余香蕉数:265,剩余路程:93

剩余香蕉数:260,剩余路程:92

剩余香蕉数:255,剩余路程:91

剩余香蕉数:250,剩余路程:90

剩余香蕉数:245,剩余路程:89

剩余香蕉数:240,剩余路程:88

剩余香蕉数:235,剩余路程:87

剩余香蕉数:230,剩余路程:86

剩余香蕉数:225,剩余路程:85

剩余香蕉数:220,剩余路程:84

剩余香蕉数:215,剩余路程:83

剩余香蕉数:210,剩余路程:82

剩余香蕉数:205,剩余路程:81

剩余香蕉数:200,剩余路程:80

剩余香蕉数:197,剩余路程:79

剩余香蕉数:194,剩余路程:78

剩余香蕉数:191,剩余路程:77

剩余香蕉数:188,剩余路程:76

剩余香蕉数:185,剩余路程:75

剩余香蕉数:182,剩余路程:74

剩余香蕉数:179,剩余路程:73

剩余香蕉数:176,剩余路程:72

剩余香蕉数:173,剩余路程:71

剩余香蕉数:170,剩余路程:70

剩余香蕉数:167,剩余路程:69

剩余香蕉数:164,剩余路程:68

剩余香蕉数:161,剩余路程:67

剩余香蕉数:158,剩余路程:66

剩余香蕉数:155,剩余路程:65

剩余香蕉数:152,剩余路程:64

剩余香蕉数:149,剩余路程:63

剩余香蕉数:146,剩余路程:62

剩余香蕉数:143,剩余路程:61

剩余香蕉数:140,剩余路程:60

剩余香蕉数:137,剩余路程:59

剩余香蕉数:134,剩余路程:58

剩余香蕉数:131,剩余路程:57

剩余香蕉数:128,剩余路程:56

剩余香蕉数:125,剩余路程:55

剩余香蕉数:122,剩余路程:54

剩余香蕉数:119,剩余路程:53

剩余香蕉数:116,剩余路程:52

剩余香蕉数:113,剩余路程:51

剩余香蕉数:110,剩余路程:50

剩余香蕉数:107,剩余路程:49

剩余香蕉数:104,剩余路程:48

剩余香蕉数:101,剩余路程:47

剩余香蕉数:100,剩余路程:46

剩余香蕉数:99,剩余路程:45

剩余香蕉数:98,剩余路程:44

剩余香蕉数:97,剩余路程:43

剩余香蕉数:96,剩余路程:42

剩余香蕉数:95,剩余路程:41

剩余香蕉数:94,剩余路程:40

剩余香蕉数:93,剩余路程:39

剩余香蕉数:92,剩余路程:38

剩余香蕉数:91,剩余路程:37

剩余香蕉数:90,剩余路程:36

剩余香蕉数:89,剩余路程:35

剩余香蕉数:88,剩余路程:34

剩余香蕉数:87,剩余路程:33

剩余香蕉数:86,剩余路程:32

剩余香蕉数:85,剩余路程:31

剩余香蕉数:84,剩余路程:30

剩余香蕉数:83,剩余路程:29

剩余香蕉数:82,剩余路程:28

剩余香蕉数:81,剩余路程:27

剩余香蕉数:80,剩余路程:26

剩余香蕉数:79,剩余路程:25

剩余香蕉数:78,剩余路程:24

剩余香蕉数:77,剩余路程:23

剩余香蕉数:76,剩余路程:22

剩余香蕉数:75,剩余路程:21

剩余香蕉数:74,剩余路程:20

剩余香蕉数:73,剩余路程:19

剩余香蕉数:72,剩余路程:18

剩余香蕉数:71,剩余路程:17

剩余香蕉数:70,剩余路程:16

剩余香蕉数:69,剩余路程:15

剩余香蕉数:68,剩余路程:14

剩余香蕉数:67,剩余路程:13

剩余香蕉数:66,剩余路程:12

剩余香蕉数:65,剩余路程:11

剩余香蕉数:64,剩余路程:10

剩余香蕉数:63,剩余路程:9

剩余香蕉数:62,剩余路程:8

剩余香蕉数:61,剩余路程:7

剩余香蕉数:60,剩余路程:6

剩余香蕉数:59,剩余路程:5

剩余香蕉数:58,剩余路程:4

剩余香蕉数:57,剩余路程:3

剩余香蕉数:56,剩余路程:2

剩余香蕉数:55,剩余路程:1

剩余香蕉数:54,剩余路程:0

标签:

算法

猴子搬香蕉Java实现_趣味算法:猴子搬香蕉问题相关推荐

  1. java 独木桥_趣味算法——青蛙过河(JAVA)

    青蛙过河是一个非常有趣的智力游戏,其大意如下: 一条河之间有若干个石块间隔,有两队青蛙在过河,每队有3只青蛙,这些青蛙只能向前移动,不能向后移动,且一次只能有一只青蛙向前移动.在移动过程中,青蛙可以向 ...

  2. 匈牙利算法java实现_匈牙利算法(Hungarian Algorithm)

    匈牙利算法是一种在多项式时间内求解任务分配问题的组合优化算法.换句话说就是,在可以接受的时间内去做匹配. 1. 描述问题 给定2个集合A和B,然后将AB中的元素完成一个连线.(这不就是小时候的连线题么 ...

  3. java青蛙过河打字_趣味算法——青蛙过河(JAVA)

    青蛙过河是一个非常有趣的智力游戏,其大意如下: 一条河之间有若干个石块间隔,有两队青蛙在过河,每队有3只青蛙,这些青蛙只能向前移动,不能向后移动,且一次只能有一只青蛙向前移动.在移动过程中,青蛙可以向 ...

  4. 排序算法java源代码_排序算法汇总(java实现,附源代码)

    整理系统的时候发现了原来写的各种算法的总结,看了一下,大吃一惊,那时候的我还如此用心,具体的算法,有的已经模糊甚至忘记了,看的时候就把内容整理出来,顺便在熟悉一下,以后需要的时候就可以直接过来摘抄了. ...

  5. bitmap的java原理_布隆算法的原理及JAVA实现

    Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法.通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合. Bloom Filter ...

  6. 聚类算法的java实现_聚类算法之BIRCH(Java实现)

    BIRCH(Balanced Iterative Reducing and Clustering using Hierarchies)天生就是为处理超大规模(至少要让你的内存容不下)的数据集而设计的, ...

  7. 排序算法java快速排序_快速排序算法--Java实现

    标签(空格分隔): 数据结构与算法 原理: 对于任意一个无序数组,我们随机的选一个元素作为基准元素(例如:数组中的最后一个或者第一个元素, 然后我们将数组中的剩余元素分别与基准元素进行比较,将小于或等 ...

  8. java 墨卡托投影_墨卡托投影算法应用---获取辖区某区域的精准电子围栏

    背景:某项目做区域监控,需要内置某些区域的电子围栏. 方案:利用某度接口中墨卡托投影值,进行经纬度转换,入库保存后,让前端获取. 前置数据:区域文案名清单 接口1:  查询某区域的uid http:/ ...

  9. python约瑟夫环问题给十个学生编号报到3者出列_趣味算法--约瑟夫环问题(示例代码)...

    问题描述 已知n个人(以编号1,2,3,...,n分别表示)围坐在一张圆桌上.指定编号为k的人开始从1报数,数到m的那个人出列:出列那个人的下一位又从1开始报数,数到m的那个人出列:以此规则重复下去, ...

最新文章

  1. 广度优先搜索(BFS)模板
  2. session_start() [function.session-start]
  3. Windows——蓝屏[失败的操作:WdFilter.sys]解决方案
  4. 解决WebBrowser控件会导致应用程序占用内存居高不下问题
  5. React Native学习总结第二天
  6. GridView commandname
  7. php与mysql毕业设计_基于PHP的毕业设计管理系统设计与实现毕业论文+项目源码及数据库文件...
  8. Android项目中嵌入Cocos游戏项目
  9. eclipse 连接mysql 数据库 实现数据库基本操作
  10. MB/s MiB/s之间换算
  11. 51单片机串口中断控制灯
  12. linux pci转can驱动程序,PCI转LPT并口卡驱动程序
  13. gnu stubs arch linux,编译Nachos源代码时出错“gnu/stubs-32.h:没有这样的文件或目录”...
  14. 美团点评合并,百度成O2O最大变量
  15. Java入土---面向对象(OOP)
  16. 算法学习-零子数组,最大连续子数组
  17. 把一个把正整数分解为素数乘积
  18. 通过配置环境变量解锁win+r新玩法
  19. 康耐视In-Sight操作流程
  20. 封闭基金周折价排行表(20060901)[ZT]

热门文章

  1. Tui-x 资源管理
  2. 从1到n整数中1出现的次数(python 实现)
  3. Day0–MD语法+常用快捷键+常用dos命令
  4. 复杂列表twoway-view的使用
  5. 第七次作业:需求分析
  6. Axure京东高保真原型图
  7. 如何给数组中的元素赋值?
  8. 学籍管理系统毕业设计
  9. python0是true还是false_python 中的True和1及False和0是可以等价比较
  10. MD5加密漏洞(MD5绕过方式-0e绕过/数组绕过/MD5碰撞/MD5SQL注入)