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