第一百一十章 優化

字數:3865   加入書籤

A+A-


    孟響開始奮筆疾書。他感覺,如果用鍵盤,他寫代碼的速度隻是一般,畢竟手速跟不上腦子。但是用筆,他僅僅用了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)