第一百一十章 優化
字數:3865 加入書籤
孟響開始奮筆疾書。他感覺,如果用鍵盤,他寫代碼的速度隻是一般,畢竟手速跟不上腦子。但是用筆,他僅僅用了3分鍾,就擼出了第一個版本的主體函數。當然,這隻是八皇後主體程序。
八個for循環鼎立在前方,他有百分百的把握,隻要寫完,這個解法一定是正確的。
隻是他遇到了一個難題。
如果N不是定值時,他不知道要寫幾個for。
如果N是10,他就是10個for循環……
“這個就是,8個循環嵌套,百分百能求出來,但是如果是N皇後……”孟響說著說著,聲音小了下去。
“哥哥!你怎麽能用這麽笨的方法。”孟夢看到哥哥寫好的主體,有些哭笑不得。這種8個for,計算量完全就是指數形式的,屬於所有方法中時間最慢,消耗資源最多的方法。
孟響有些尷尬的摸了摸腦袋,時間太短了,他也沒法一下想的那麽全。
“那…換一種,反正這個的N皇後版本我也不知道怎麽改。”孟響在寫8個for循環時,腦中已經有了一定雛型,翻過一頁紙後,就繼續開始寫起了第二版。
“先對每一行的每一列進行探測,看是否能放置皇後,如果可以,就在這一列放一個皇後,然後行數加一。然後繼續探測下一行的皇後位置。”孟夢在旁邊提醒道。
孟響一邊點頭,一邊飛快的開始寫主體函數。
“是不是如果已經探測完所有的列都沒有找到可以防止皇後的列,就可以回溯了?”孟響抓住一點思路,下意識問道,問的同時,手上的筆一直沒停。
“嗯!回溯之後,把上一行的皇後位置往後移一列——”
“如果上一行的皇後也找不到位置,那麽應該就繼續往前回溯,直至前方某一行找到皇後的位置能移動,或者回到第一行!”孟響接話道,他思路一下子清晰了。“如果回到第一行,也無法找到可以放置皇後的位置,那就表示所有的解都已經找到。”
“哥哥真聰明。”聽到哥哥的話,孟夢的大眼睛眯成了月牙兒。她繼續說道:“同時,如果一直不用回溯,找到最後一行放置皇後,就表示已經找到一個結果。”
“明白了,因為要找的是所有的解,那麽,找到了一個結果後不能直接結束程序,程序應該在第一行無法找到放置皇後的位置時結束。而找到一個結果後,應該清除掉,然後在剛剛放皇後的下一列開始探測。”
孟響嘴裏念念叨叨,腦中飛速運轉,手上書寫的速度更是沒有絲毫停頓和放緩,白紙上飛快出現一行行代碼。有了孟夢的助力,孟響很快就寫完大部分程序。這次,他的循環一下精簡到了兩個while,和剛剛8個for簡直有著天差地別。
這次,他僅僅用了5分鍾,就寫好了3個函數。
在手寫代碼的速度上,他有著無與倫比的優勢。別人都是受限於思考速度,必須一邊停筆理順思路一邊寫,而他則不被這個問題困擾。即便是妹妹,也絕對沒有他這種快槍手的速度……
“還有10分鍾才結束,哥哥真厲害。”孟夢看著哥哥滿滿地寫了一大版,既驚歎哥哥書寫代碼的速度,又驚歎哥哥非凡的思考速度和理解能力。
哥哥果然和自己一樣,也是很聰明的孩子!
“我們一起來過一遍,我來說每個地方的用處,你來幫我把把關。”孟響大致掃了一眼程序。
孟夢點了點頭,一邊聽著哥哥解釋程序的邏輯,一邊開始判斷邏輯的正確性以及是否能優化。
……
“二維數組改成一維數組,數組下標表示行,數組元素表示列,這樣能節省內存!”高三那名集訓隊的學長眼前一亮,思如泉湧。看了看時間,他立馬開始寫起了第二版的程序。
……
“遞歸算法的話,先天弱了一些,那麽……”高二“漂亮”男生努力觀想自己女裝的畫麵,隻有這樣,他才能提高一點自己的思考能力和思維活躍度。
突然,他腦中蹦出了一個題目。
猴子選大王!
“需要有個數據結構能夠動態的刪除掉已經有的值!”他喃喃自語道,顯得神神叨叨的。
“你怎麽了?”女生看他一臉茫然,奇怪的問道。
“我怎麽了……”說到這,男生眼前一亮,猛地拿起一支筆來:“遞歸也是可以優化的,我們應該用鏈表試試。”說道這,他立馬在草稿紙上開始畫起了模型圖。
……
“遞歸方法寫出來了,有什麽辦法能繼續優化嗎?”小胖子叼著筆,皺著眉仔細思索,他完全是一個人在戰鬥。而其他三人眼巴巴地看著他這位NOIP拿580分的大高手。
這三個家夥是指望不上了,就算他們能理解程序,也不能立馬給自己建議。
“N*N的棋盤……”小胖子的思維以不符合他體型慣性的速度開始旋轉。
那麽……
想到這,小胖子直接爆了個粗口:“臥槽!”
另外嗷嗷待哺地三人嚇了一跳。
“怎麽了,文斌。”其中一位女生小聲問道,這會兒,小胖子就是她的男神。
當然,隻是這30分鍾而已。
聽到“文斌”兩個字,小胖子節操碎了一地,連雞皮疙瘩都起了不少,在他眼裏,參加信息競賽的都是哥們,這麽叫他…不能忍!
“N*N的棋盤,不就是正方形嘛,那特麽不就是對稱嘛,我……得趕緊改下程序,還能優化點。”小胖子喃喃道,他看了看時間,整個人抖了一抖,連忙開始寫第二版的代碼。
其他三人在旁邊給他鼓氣……
原來,一神帶三坑是這種滋味。
他一邊寫,一邊在心裏默默想道。
……
“大概就是這樣了。”麵對孟夢這種學生,孟響飛快地就解釋完了所有的程序,孟夢也迅速理解了其中的邏輯。
在她看來,這些東西的邏輯還是很簡單的。
“那,哥哥,我想到一個方法,你看看能不能試一下。”孟夢琢磨了一會兒,有些不好意思地說道:“既然數組有下標,那麽不用矩陣…不,二維數組,試試能不能用一維數組,下標來表示列,下標0就是第一列!這個哥哥能寫嘛?”
聽到妹妹的提醒,孟響眼前一亮。(m.101novel.com)