孟響開始奮筆疾書。他感覺,如果用鍵盤,他寫代碼的速度只是一般,畢竟手速跟不上腦子。但是用筆,他僅僅用了3分鐘,就擼出了第一個版本的主體函數(shù)。當然,這只是八皇后主體程序。
八個for循環(huán)鼎立在前方,他有百分百的把握,只要寫完,這個解法一定是正確的。
只是他遇到了一個難題。
如果N不是定值時,他不知道要寫幾個for。
如果N是10,他就是10個for循環(huán)……
“這個就是,8個循環(huán)嵌套,百分百能求出來,但是如果是N皇后……”孟響說著說著,聲音小了下去。
“哥哥!你怎么能用這么笨的方法?!泵蠅艨吹礁绺鐚懞玫闹黧w,有些哭笑不得。這種8個for,計算量完全就是指數(shù)形式的,屬于所有方法中時間最慢,消耗資源最多的方法。
孟響有些尷尬的摸了摸腦袋,時間太短了,他也沒法一下想的那么全。
“那…換一種,反正這個的N皇后版本我也不知道怎么改。”孟響在寫8個for循環(huán)時,腦中已經(jīng)有了一定雛型,翻過一頁紙后,就繼續(xù)開始寫起了第二版。
“先對每一行的每一列進行探測,看是否能放置皇后,如果可以,就在這一列放一個皇后,然后行數(shù)加一。然后繼續(xù)探測下一行的皇后位置?!泵蠅粼谂赃吿嵝训?。
孟響一邊點頭,一邊飛快的開始寫主體函數(shù)。
“是不是如果已經(jīng)探測完所有的列都沒有找到可以防止皇后的列,就可以回溯了?”孟響抓住一點思路,下意識問道,問的同時,手上的筆一直沒停。
“嗯!回溯之后,把上一行的皇后位置往后移一列——”
“如果上一行的皇后也找不到位置,那么應(yīng)該就繼續(xù)往前回溯,直至前方某一行找到皇后的位置能移動,或者回到第一行!”孟響接話道,他思路一下子清晰了?!叭绻氐降谝恍?,也無法找到可以放置皇后的位置,那就表示所有的解都已經(jīng)找到?!?p> “哥哥真聰明?!甭牭礁绺绲脑?,孟夢的大眼睛瞇成了月牙兒。她繼續(xù)說道:“同時,如果一直不用回溯,找到最后一行放置皇后,就表示已經(jīng)找到一個結(jié)果?!?p> “明白了,因為要找的是所有的解,那么,找到了一個結(jié)果后不能直接結(jié)束程序,程序應(yīng)該在第一行無法找到放置皇后的位置時結(jié)束。而找到一個結(jié)果后,應(yīng)該清除掉,然后在剛剛放皇后的下一列開始探測?!?p> 孟響嘴里念念叨叨,腦中飛速運轉(zhuǎn),手上書寫的速度更是沒有絲毫停頓和放緩,白紙上飛快出現(xiàn)一行行代碼。有了孟夢的助力,孟響很快就寫完大部分程序。這次,他的循環(huán)一下精簡到了兩個while,和剛剛8個for簡直有著天差地別。
這次,他僅僅用了5分鐘,就寫好了3個函數(shù)。
在手寫代碼的速度上,他有著無與倫比的優(yōu)勢。別人都是受限于思考速度,必須一邊停筆理順思路一邊寫,而他則不被這個問題困擾。即便是妹妹,也絕對沒有他這種快槍手的速度……
“還有10分鐘才結(jié)束,哥哥真厲害?!泵蠅艨粗绺鐫M滿地寫了一大版,既驚嘆哥哥書寫代碼的速度,又驚嘆哥哥非凡的思考速度和理解能力。
哥哥果然和自己一樣,也是很聰明的孩子!
“我們一起來過一遍,我來說每個地方的用處,你來幫我把把關(guān)?!泵享懘笾聮吡艘谎鄢绦?。
孟夢點了點頭,一邊聽著哥哥解釋程序的邏輯,一邊開始判斷邏輯的正確性以及是否能優(yōu)化。
……
“二維數(shù)組改成一維數(shù)組,數(shù)組下標表示行,數(shù)組元素表示列,這樣能節(jié)省內(nèi)存!”高三那名集訓隊的學長眼前一亮,思如泉涌??戳丝磿r間,他立馬開始寫起了第二版的程序。
……
“遞歸算法的話,先天弱了一些,那么……”高二“漂亮”男生努力觀想自己女裝的畫面,只有這樣,他才能提高一點自己的思考能力和思維活躍度。
突然,他腦中蹦出了一個題目。
猴子選大王!
“需要有個數(shù)據(jù)結(jié)構(gòu)能夠動態(tài)的刪除掉已經(jīng)有的值!”他喃喃自語道,顯得神神叨叨的。
“你怎么了?”女生看他一臉茫然,奇怪的問道。
“我怎么了……”說到這,男生眼前一亮,猛地拿起一支筆來:“遞歸也是可以優(yōu)化的,我們應(yīng)該用鏈表試試?!闭f道這,他立馬在草稿紙上開始畫起了模型圖。
……
“遞歸方法寫出來了,有什么辦法能繼續(xù)優(yōu)化嗎?”小胖子叼著筆,皺著眉仔細思索,他完全是一個人在戰(zhàn)斗。而其他三人眼巴巴地看著他這位NOIP拿580分的大高手。
這三個家伙是指望不上了,就算他們能理解程序,也不能立馬給自己建議。
“N*N的棋盤……”小胖子的思維以不符合他體型慣性的速度開始旋轉(zhuǎn)。
那么……
想到這,小胖子直接爆了個粗口:“臥槽!”
另外嗷嗷待哺地三人嚇了一跳。
“怎么了,文斌?!逼渲幸晃慌÷晢柕?,這會兒,小胖子就是她的男神。
當然,只是這30分鐘而已。
聽到“文斌”兩個字,小胖子節(jié)操碎了一地,連雞皮疙瘩都起了不少,在他眼里,參加信息競賽的都是哥們,這么叫他…不能忍!
“N*N的棋盤,不就是正方形嘛,那特么不就是對稱嘛,我……得趕緊改下程序,還能優(yōu)化點?!毙∨肿余?,他看了看時間,整個人抖了一抖,連忙開始寫第二版的代碼。
其他三人在旁邊給他鼓氣……
原來,一神帶三坑是這種滋味。
他一邊寫,一邊在心里默默想道。
……
“大概就是這樣了?!泵鎸γ蠅暨@種學生,孟響飛快地就解釋完了所有的程序,孟夢也迅速理解了其中的邏輯。
在她看來,這些東西的邏輯還是很簡單的。
“那,哥哥,我想到一個方法,你看看能不能試一下?!泵蠅糇聊チ艘粫?,有些不好意思地說道:“既然數(shù)組有下標,那么不用矩陣…不,二維數(shù)組,試試能不能用一維數(shù)組,下標來表示列,下標0就是第一列!這個哥哥能寫嘛?”
聽到妹妹的提醒,孟響眼前一亮。