第47章 當時惘然(二)(1 / 3)

趙嵐來到食堂,這裏冷冷清清,隻有一半窗口開放,眼前是一片白色:饅頭、包子、花卷、發糕、煎雞蛋、粉條。那粉條和裝粉條的紙碗都是白色,煎雞蛋除了蛋黃都是白的,還有這些叔叔阿姨的白製服,後麵的白牆,真像在辦喪事啊。

現在奮戰在學校裏的大多是高三學生。趙嵐印象中的高三學生應是黑眼圈,駝著背,行動遲緩,神情呆滯,跟苦役犯一樣。然而,他眼前的這群高三學生從外表看來和天真的學弟學妹並無差別,他們的神情也並非凝重得跟世界末日來了似的,還有說有笑,全是陽光少年。莫非這裏的高三和其他地方的高三不一樣?

他吃了兩個包子,來到機房,居然十分清醒,毫無困意。他有點恐慌,過度興奮好像預示著會猝死啊。

薑老師在講啟發式搜索,趙嵐又像在聽天書,他心想自己都還沒弄懂,怎麼能去啟發電腦呢。薑老師說:“計算機比較傻嘛,你讓它去窮舉,去搜索,它真的就去嚐試每一種情況,選出最優解,這會耗費很多時間,你的程序甚至會因為空間和時間開銷太大,被電腦當成病毒了,然後就被殺掉了。”

大家忍不住笑。趙嵐嘀咕著:“360安全衛士曾經就說我寫的程序疑似為木馬病毒。”

“所以,應該在搜索時判斷一下,哪些方案是有前途的,有希望得到最優解,那就優先嚐試這些方案,這就是啟發式搜索。並且,如果已經找到一個解決方案,再嚐試其他方案時,要是當前狀況明顯比之前的解決方案更差,那就直接放棄當前方案,再去嚐試別的方案,不用一路走到黑,這就是剪枝。這就讓電腦變聰明了,省了很多無用功。”

薑老師的PPT裏突然出現一個大蛋糕,分了好多層,趙嵐想著早上吃的那兩個幹巴巴的包子,現在不禁垂涎三尺。

“今天布置的3道題裏就有這個生日蛋糕問題。假如我要做一個蛋糕,分成n層,每層都是圓柱體,每層的高度和直徑應該大於它上方那一層的高度和直徑,否則這蛋糕就很醜。蛋糕的外表麵要塗奶油,我問你,指定了蛋糕體積V和層數n之後,怎樣設計蛋糕形狀,可以讓塗的奶油最少?每一層高度和直徑都要是整數。當然,V一定是圓周率的整數倍。”

許申點了點頭:“隻有是整數才能用搜索法,如果不是整數那就沒法做。”

趙嵐還沒反應過來,他還在比較包子和蛋糕的口感差別。

薑老師說:“就用搜索來做,也就是窮舉,把每種高度和直徑都試試。當然,要限製搜索範圍,要剪枝。高度和直徑不能太大,不能讓總體積超過V嘛。你在求出一種方案以後,再嚐試其他方案時,如果當前用的奶油量已經超過之前方案的,那就直接放棄當前方案,迷途知返。”

昨天的題目還是新手上路的難度,今天就是獨孤求敗的難度了,大家都在冥思苦想。趙嵐對著電腦屏幕凝望許久,像在看情書似的,他皺著眉說:“我這個遞歸程序怎麼總是報錯啊。錯誤202。”

計算機不僅傻,而且特別死板,程序稍微出點錯它就罷工,丟出一個錯誤編號。許申說:“錯誤編號202代表堆棧溢出。恐怕是你的遞歸寫錯了,沒完沒了地運行,程序爆掉了。”

褚光良叫道:“我是錯誤201!”

尤南俊也叫道:“我也是錯誤201!”

許申說:“錯誤201估計是數組下標越界了。”

趙嵐整個上午都沒檢查出他錯在哪兒,要說一個人去糾別人的錯往往是火眼金睛,然而要給自己找茬那就難上加難。他哀叫一聲:“誰來幫我看看程序啊!班長,幫我看看!”

尤南俊問:“班長?我們什麼時候推舉班長了?”

褚光良笑道:“他特指我們21班的班長。就是我。”他走到趙嵐身邊,問:“你還是錯誤202?”

“是啊,我給你講講我的程序是怎麼寫的。首先,這是個遞歸函數,假設當前是在嚐試第k層蛋糕的直徑和高度……”

講到一半,趙嵐大呼一聲:“哦,我明白了!原來是這裏錯了!”

褚光良笑了:“我一句話都沒說,你就明白了。”

“多謝捧場。我發現,向別人講解自己的程序真是找出錯誤的絕好方法。”

高一和高二信息競賽組的同學都在集訓,當然沒有高三的,高三的都在熱熱鬧鬧地準備決戰,離高考大概也就一百天了。高二信息組的那位鄒晨教練很有名氣,他有一身結結實實的肉,一張圓圓潤潤的臉,灑脫詼諧,像個說相聲的。