趣味算法:猴子搬香蕉問題

關乎數學規劃
服務器君一共花費了165.859 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.zqhthc.tw/librarys/veda/detail/1302,歡迎訪問原出處。

不打個分嗎?

轉載隨意,但請帶上本文地址:

http://www.zqhthc.tw/librarys/veda/detail/1302

如果你認為這篇文章值得更多人閱讀,歡迎使用下面的分享功能。
小提示:您可以按快捷鍵 Ctrl + D,或點此 加入收藏

閱讀一百本計算機著作吧,少年

很多人覺得自己技術進步很慢,學習效率低,我覺得一個重要原因是看的書少了。多少是多呢?起碼得看3、4、5、6米吧。給個具體的數量,那就100本書吧。很多人知識結構不好而且不系統,因為在特定領域有一個足夠量的知識量+足夠良好的知識結構,系統化以后就足以應對大量未曾遇到過的問題。

奉勸自學者:構建特定領域的知識結構體系的路徑中再也沒有比學習該專業的專業課程更好的了。如果我的知識結構體系足以囊括面試官的大部分甚至吞并他的知識結構體系的話,讀到他言語中的一個詞我們就已經知道他要表達什么,我們可以讓他坐“上位”畢竟他是面試官,但是在知識結構體系以及心理上我們就居高臨下。

所以,閱讀一百本計算機著作吧,少年!

《程序員修煉之道:從小工到專家》 亨特(Andrew Hunt) (作者), 托馬斯(David Thomas) (作者), 馬維達 (譯者)

《程序員修煉之道:從小工到專家》內容簡介:《程序員修煉之道》由一系列獨立的部分組成,涵蓋的主題從個人責任、職業發展,知道用于使代碼保持靈活、并且易于改編和復用的各種架構技術,利用許多富有娛樂性的奇聞軼事、有思想性的例子及有趣的類比,全面闡釋了軟件開發的許多不同方面的最佳實踐和重大陷阱。無論你是初學者,是有經驗的程序員,還是軟件項目經理,《程序員修煉之道:從小工到專家》都適合你閱讀。

更多計算機寶庫...

英超直播吻球网