第一百零九章 搭配
“回溯法又叫做試探法,實(shí)際是一種選優(yōu)的方法,而這個(gè)N皇后問題,其實(shí)應(yīng)該算回溯法中一個(gè)經(jīng)典的案例。”孟夢一邊看著哥哥一邊解釋道。
孟響連連點(diǎn)頭。
請開始你的表演。
“回溯法的基本思想就是:從一條路往前走,能進(jìn)則進(jìn),不能進(jìn)則退回來,換一條路再試。而這實(shí)際就是窮舉出所有可能,然后從中找出滿足要求的可能或者最優(yōu)的情況,從而得到解?!?p> 孟夢說完,一邊在紙上畫著一邊說道:“我們用一個(gè)N*N的矩陣來表示棋盤,然后我們把當(dāng)前行和當(dāng)前列分別設(shè)為第一行和第一列?!?p> “矩陣那個(gè)不是沒學(xué)……”孟響小聲問道。
迎接他的是中性筆的筆尖。
仿佛他只要敢繼續(xù)說話,妹妹就會殺哥證道一樣。
他連忙閉上了嘴,腦中飛快思考。
這不就是數(shù)組嘛。
說得這么高大上!
孟響同學(xué)心里不服氣,但是人在筆尖下,不得不低頭。
孟夢見哥哥害怕,滿意地收回了筆,繼續(xù)給哥哥講起如果用回溯法,怎么解N皇后問題的思路來。
教室里并不安靜,高一高二所在的前排座位,大家的議論聲,聲聲入耳,時(shí)不時(shí)還有兩人之間的不同意見的爭論聲。
高三四大天王都是孤軍奮戰(zhàn),一個(gè)個(gè)正在埋頭書寫。他們選擇的方案都是先畫出模型,然后再從最簡4皇后開始往下推一兩次之后寫代碼,寫完代碼之后再慢慢優(yōu)化,畢竟,這種題目他們幾乎都有練過,雖然時(shí)間可能比較久遠(yuǎn),但是經(jīng)歷了多次大賽以及長久練習(xí)的他們,無論是經(jīng)驗(yàn)上還是代碼能力上,都比高一高二的學(xué)生只強(qiáng)不弱。
張棟梁走下講臺,慢慢圍著偌大的多媒體教室轉(zhuǎn)了一圈,兩圈??戳丝瓷砼哉谟懻摰谋娙?,他覺得自己的這個(gè)職業(yè)選擇非常正確,他喜歡和學(xué)生們待在一起,更加喜歡中學(xué)的這種朝氣蓬勃。
“所以呢,這個(gè)回溯的解法基本就是這個(gè)樣子。只是,如果用不同的數(shù)據(jù)結(jié)構(gòu),或者是檢查時(shí)候的條件不同,應(yīng)該效率不同?!闭f完后,孟夢放下了筆。
孟響聽完妹妹說的方法,沉思了幾秒鐘之后,眼前一亮。
顯然,他已經(jīng)理解了這個(gè)方法的思路。
他抬起頭來,看到張老師正站在妹妹身后看著兩人的草稿紙。
“張老師好。”孟響下意識地說道。
聽到哥哥的話,妹妹嚇了一跳,回頭看到張老師正站在自己身后,連忙也跟著給老師問好。
張棟梁笑著點(diǎn)了點(diǎn)頭,他已經(jīng)站在孟夢身后聽了老半天了,這個(gè)小女孩講解的思路很清晰,至少,在數(shù)學(xué)思想和算法選擇上沒有什么問題。
其他的,就只看怎么寫代碼了。
雖然方法和思想上選擇是正確的,但是數(shù)據(jù)結(jié)構(gòu)選擇和優(yōu)化策略不當(dāng),寫出來代碼的運(yùn)行效率會天差地別,甚至幾百倍上萬倍的差距。
“你們繼續(xù),講得非常到位,好好寫代碼?!睆垪澚阂妰扇税l(fā)現(xiàn)了他,笑著鼓勵(lì)道,然后繼續(xù)朝后面走去。
孟夢不好意思的低下了頭,她可不會寫真代碼,而書上大部分都是偽代碼,并不影響她閱讀。
“哥哥,你聽懂了嗎?”孟夢對哥哥問道。
孟響這次很有自信地點(diǎn)了點(diǎn)頭,他看了看時(shí)間,才剛剛過去8分鐘而已。
“要不,我們也試試寫寫?”孟響有些手癢,小聲提議道。
孟夢從口袋里掏出了一只筆,遞給哥哥,小臉微紅,小聲說道:“可是,我不會寫代碼的?!?p> 孟響接過筆,聽到妹妹的話之后,他又一次心理平衡了,小天才妹妹不會寫,現(xiàn)在就輪到他,孟·白班編程·響發(fā)揮的時(shí)候了。
“沒事,我會寫。我一邊寫一遍解釋給你聽,你幫我驗(yàn)證思路有沒有錯(cuò)誤,我寫,你把關(guān)。”
聽到這話,孟夢也眼前一亮。
聽上去,是個(gè)不錯(cuò)的主意。
而且,她是和哥哥一起在努力!想到這,她心里有些甜甜的。
“那好的嘛!但是,你要是代碼格式什么的錯(cuò)了,可不能賴我?!泵蠅籼鹛鸬卮饝?yīng)之后,又說道。
“哼!放心,格式什么的這輩子都不會錯(cuò)的?!泵享懲瑢W(xué)對妹妹這種不信任自己的行為予以官方譴責(zé)!他這兩個(gè)多星期,寫了至少150張A4紙的代碼,而且還是用的雙面寫加八號字體。從一開始的錯(cuò)誤百出,到現(xiàn)在一天都出不了幾次錯(cuò),他可是很努力的。
C語言的語法規(guī)則和基本頭函數(shù)在他眼里,就像RB小電影里那些著名影星一樣……扯遠(yuǎn)了。
“那我就相信哥哥一次吧?!泵蠅綦m然有些狐疑,但還是打心底里相信了哥哥。
兩人翻過一頁,一邊討論一邊開始寫了起來。
時(shí)間一分一秒的過去。
“李神,怎么樣。”一個(gè)男生寫完代碼之后,把草稿紙遞給旁邊的一個(gè)高高大大的男生。他頭一天晚上才看了這個(gè)題目,此時(shí)強(qiáng)行靠著記憶在十多分鐘內(nèi)寫了出來。雖然方法不是最好的,但是至少他們組也有個(gè)可以上交的東西了。
“我看看?!北缓盀槔钌竦哪猩舆^草稿紙,和另外兩人一起開始細(xì)細(xì)看了起來。
……
“這個(gè)我不應(yīng)該用二維數(shù)組。”高三參加集訓(xùn)隊(duì)的那名學(xué)長寫完之后,心里運(yùn)算了幾次之后,立馬就看出了問題。
他使用的是二維數(shù)組來表示棋盤,但是寫的函數(shù)使用次數(shù)太多了,讓他覺得非常笨重,效率極差。
發(fā)現(xiàn)了問題之后,他開始第一次修改代碼。
……
“我只會遞歸,這個(gè)真沒辦法?!备叨幻粗磉叡茸约哼€“漂亮”幾分的男同學(xué),有些尷尬地說道。而身旁的男生看著模擬圖解抓耳撓腮。
時(shí)間太少了,他一緊張就斷了思路。
要是能穿女裝就好了,他發(fā)現(xiàn)自己只要穿女裝,就有各項(xiàng)buff加成,30分鐘內(nèi)解除這個(gè)問題并不是多么困難。
想到這,他又一陣懊悔。
在他糾結(jié)自己就應(yīng)該穿女裝時(shí),眼前的女同學(xué)絲毫不知道他內(nèi)心的危險(xiǎn)想法。
張棟梁繞著底下又轉(zhuǎn)了一圈之后,回到了講臺上,時(shí)間已經(jīng)過去了15分鐘。