第一百一十四章 兩分鐘講解
很快,高三的那名學長就講完了自己的代碼,整個過程中非常流暢。
最後,張老師總結道:「這位同學講解的非常棒,思路也很清晰,並且代碼沒有出現什麼錯誤。」
隨著張老師話音落下,多媒體教室里掌聲響起,那名學長自信地走下了講台,而張老師則最終給他了一個20分。
台下的學生們爆發出一陣陣驚呼。這個分數就是現在所有人之中分數最高的了,也是這次競賽中分數最高的了。
至於最後一組?
大家已經忘記了還有最後一組。
前四名已經確定了,高三兩組,高二兩組,高一全軍覆沒。如果那名李神所在隊伍在代碼上沒有出現錯誤的話,可以擠掉高二的一個名額。
張老師雙手平放,示意大家停止掌聲,然後拿起了最後一張寫滿代碼的草稿紙。
「那麼,現在就剩最後一組了,我們歡迎,高一夢響隊來講解他們的代碼。」在念著名字的同時,張棟樑也飛快的瞟了一眼草稿紙上的代碼,看了幾眼關鍵的函數之後,他就明白了這個隊伍的解題思路。
和剛剛那名高三學生的方法基本一致,寫法上更加優美一些,如果講解不錯的話,他也打算給這個隊伍20分。
這麼短的時間內能想出這個方法並且寫出來,在他看來已經非常不錯了,正常考試時,都是一兩小時一個題,而且還是用鍵盤的情況下。畢竟,手擼代碼和鍵盤寫代碼之間的差別對大部分人來說還是很大的。
教室里再次響起了掌聲,只是相比剛剛那名高三學長下台的時候的掌聲來說,顯得稀疏了一些,特別佔了絕大多數的高一學生,已經對孟響兩人不抱希望了。畢竟他們之前都沒在電教室看到過這兩兄妹,一看就知道兩人是新手。能在這麼短的時間內寫出代碼上交並且不出錯已經證明了夢神很有天賦了,至於能為高一爭一個前四。
那......有點兒痴人說夢了。
孟夢推了哥哥一把,孟響聽到自己的名字后迅速放下了手中寫好代碼的草稿紙,站起身來。
「哥哥加油。」孟夢還是鼓勵道,雖然他們的解題方法和高三那名學長的一致,不能展示自己和哥哥剛剛想出來的更好方法讓她有些遺憾。但是現在也只能先把已有的代碼講好,拿到一個名次才是最終要的。
「嗯~~」孟響用力點了點頭,他心裡已經有了打算。
走上講台,孟響從張老師手中接過了自己寫滿代碼和註釋的草稿紙。
同時從電腦講台上拿起一隻黑色的塗鴉筆。
「那現在開始吧?」張棟樑問道,只是他有些疑惑孟響為什麼要拿筆。畢竟講解代碼只需要把草稿紙放在投影上然後依次講解就行,並不需要寫和畫什麼。
孟響看了看身旁的那塊白色小板,稍稍計算了一下尺寸,心裡篤定,同時點了點頭回答:「好的。」
隨著張棟樑開始計時,孟響沒有浪費時間,他把草稿紙放在投影儀下,背投上出現了他的代碼。同時,他一手拿著筆一手拿著話筒快速說道:「現在大家看到的是我們組的解法,其實我們組的解法其實和剛剛那位學長的差不多,但是剛剛我們組員突然想出了一種更加好的解法,所以我現在打算講解我們新的解法。」
底下坐在靠前的學生們嘴巴都張成了「O」型。
同時還有一些騷動,大夥聽完孟響的話之後,開始竊竊私語。
孟響說完,就快速走到白色小板前,一邊寫著一邊開始講解:「我們組心新想到的是位運演算法,因為時間原因,我一邊寫代碼一邊講解。」
而張棟樑也被位運演算法勾起了好奇,因為這確實是目前N皇后問題的最優解法。白書上就有這個解法的例子。但是例子歸例子,理解起來可不是那麼容易的,更別說講解了。
孟夢坐在底下捂著臉趴在桌子上,不斷地磨著牙。
哥哥怎麼可能寫得完,只有兩分鐘時間,完蛋了,她們要得0分了。
想到這,孟夢就有股想上台把哥哥拽下來自己去講解的衝動。
但是想了想,她不會代碼,只能放棄。
得0分,好丟人呀!
孟夢的小腦袋不斷往自己的手臂彎里鑽著,一副非常苦惱的模樣。
孟響一邊寫代碼,沒有絲毫停頓,一邊講解道:「這個演算法的核心就是使用bit數組來代替以前由int或者bool數組來存儲當前格子被佔用的情況。」
「程序中主要需要三個bit數組,每個對應的是N皇后格子的一列和正斜列和反斜列。」孟響一邊說,一邊寫了一個函數:
voidtest(longrow,longld,longrd)......
「其中row表示一列上是否有皇后,如果有則是1,如果沒有就是0,ld和rd分別表示正斜列和反斜列是否有皇后,接著我們要對這三個參數進行或運算,求得所有可以放置皇后的列,對應位是0。」
大夥瞪大了眼睛,看著孟響手中飛速舞動的黑色塗鴉筆,一行行代碼整齊的展現在白色小板上。
「然後,我們要對結果取反,取反之後與上全1的數,來求得當前所有可以放置皇后的位置,對應列數改為1,也就是求取當前哪些列可以放皇后。」說到這,孟響連續寫下了數個表達式。
大部分學生只能懵逼的看著孟響一邊講一邊寫代碼,只有小部分人能夠勉強跟上孟響的思路。畢竟,即便是自己去理解這種位運算,沒有十多分鐘也很難理解,更別說這短短的兩分鐘之內了。
而張棟樑站在一旁看著孟響,在他看來,目前孟響的代碼還沒有什麼錯誤,講解對他來說也非常詳細。
「pos-pos的意思就是取最右邊的1再組成二進位數。」
「然後......將pos最右邊為1的bit清零。」
「......」
「row所有位都為1時,即找到了一個成功的布局,然後我們記錄下來,回溯。」
「然後我們考慮棋盤的對稱性......」
孟響的語速越來越快,手中的書寫速度也越來越快,隨著時間逐漸走向終點,在眾人以及妹妹驚訝的眼神中,他趕在時間到達前,寫完和講解完了位運算的方法。