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

关乎数学规划
服务器君一共花费了115.892 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版)》 Alfred V. Aho (作者), Monica S.Lam (作者), 赵建华 (译者), 郑滔 (译者), 戴新宇 (译者)

《编译原理(第2版)》全面、深入地探讨了编译器设计方面的重要主题,包括词法分析、语法分析、语法制导定义和语法制导翻译、运行时刻环境、目标代码生成、代码优化技术、并行性检测以及过程间分析技术,并在相关章节中给出大量的实例。与上一版相比,《编译原理(第2版)》进行了全面的修订,涵盖了编译器开发方面的最新进展。每章中都提供了大量的系统及参考文献。《编译原理(第2版)》是编译原理课程方面的经典教材,内容丰富,适合作为高等院校计算机及相关专业本科生及研究生的编译原理课程的教材,也是广大技术人员的极佳参考读物。

更多计算机宝库...