趣味算法:猴子搬香蕉问题

关乎数学规划
服务器君一共花费了155.636 ms进行了5次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

博客园一篇文章末尾看到一个有趣的数学问题,据说是小学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

本文地址:http://www.nowamagic.net/librarys/veda/detail/1302,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/1302

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《编程珠玑(第2版)》 Jon Bentley (作者), 黄倩 (译者), 钱丽艳 (译者)

《编程珠玑(第2版)》是计算机科学方面的经典名著。书的内容围绕程序设计人员面对的一系列实际问题展开。作者Jon Bentley 以其独有的洞察力和创造力,引导读者理解这些问题并学会解决方法,而这些正是程序员实际编程生涯中至关重要的。

更多计算机宝库...