我的妹妹是学霸

第一百一十章 优化

    
    孟响开始奋笔疾书。他感觉,如果用键盘,他写代码的速度只是一般,毕竟手速跟不上脑子。但是用笔,他仅仅用了3分钟,就撸出了第一个版本的主体函数。当然,这只是八皇后主体程序。
    八个for循环鼎立在前方,他有百分百的把握,只要写完,这个解法一定是正确的。
    只是他遇到了一个难题。
    如果n不是定值时,他不知道要写几个for。
    如果n是10,他就是10个for循环……
    “这个就是,8个循环嵌套,百分百能求出来,但是如果是n皇后……”孟响说着说着,声音小了下去。
    “哥哥!你怎么能用这么笨的方法。”孟梦看到哥哥写好的主体,有些哭笑不得。这种8个for,计算量完全就是指数形式的,属于所有方法中时间最慢,消耗资源最多的方法。
    孟响有些尴尬的摸了摸脑袋,时间太短了,他也没法一下想的那么全。
    “那…换一种,反正这个的n皇后版本我也不知道怎么改。”孟响在写8个for循环时,脑中已经有了一定雏型,翻过一页纸后,就继续开始写起了第二版。
    “先对每一行的每一列进行探测,看是否能放置皇后,如果可以,就在这一列放一个皇后,然后行数加一。然后继续探测下一行的皇后位置。”孟梦在旁边提醒道。
    孟响一边点头,一边飞快的开始写主体函数。
    “是不是如果已经探测完所有的列都没有找到可以防止皇后的列,就可以回溯了?”孟响抓住一点思路,下意识问道,问的同时,手上的笔一直没停。
    “嗯!回溯之后,把上一行的皇后位置往后移一列——”
    “如果上一行的皇后也找不到位置,那么应该就继续往前回溯,直至前方某一行找到皇后的位置能移动,或者回到第一行!”孟响接话道,他思路一下子清晰了。“如果回到第一行,也无法找到可以放置皇后的位置,那就表示所有的解都已经找到。”
    “哥哥真聪明。”听到哥哥的话,孟梦的大眼睛眯成了月牙儿。她继续说道:“同时,如果一直不用回溯,找到最后一行放置皇后,就表示已经找到一个结果。”
    “明白了,因为要找的是所有的解,那么,找到了一个结果后不能直接结束程序,程序应该在第一行无法找到放置皇后的位置时结束。而找到一个结果后,应该清除掉,然后在刚刚放皇后的下一列开始探测。”
    孟响嘴里念念叨叨,脑中飞速运转,手上书写的速度更是没有丝毫停顿和放缓,白纸上飞快出现一行行代码。有了孟梦的助力,孟响很快就写完大部分程序。这次,他的循环一下精简到了两个while,和刚刚8个for简直有着天差地别。
    这次,他仅仅用了5分钟,就写好了3个函数。
    在手写代码的速度上,他有着无与伦比的优势。别人都是受限于思考速度,必须一边停笔理顺思路一边写,而他则不被这个问题困扰。即便是妹妹,也绝对没有他这种快枪手的速度……
    “还有10分钟才结束,哥哥真厉害。”孟梦看着哥哥满满地写了一大版,既惊叹哥哥书写代码的速度,又惊叹哥哥非凡的思考速度和理解能力。
    哥哥果然和自己一样,也是很聪明的孩子!
    “我们一起来过一遍,我来说每个地方的用处,你来帮我把把关。”孟响大致扫了一眼程序。
    孟梦点了点头,一边听着哥哥解释程序的逻辑,一边开始判断逻辑的正确性以及是否能优化。
    ……
    “二维数组改成一维数组,数组下标表示行,数组元素表示列,这样能节省内存!”高三那名集训队的学长眼前一亮,思如泉涌。看了看时间,他立马开始写起了第二版的程序。
    ……
    “递归算法的话,先天弱了一些,那么……”高二“漂亮”男生努力观想自己女装的画面,只有这样,他才能提高一点自己的思考能力和思维活跃度。
    突然,他脑中蹦出了一个题目。
    猴子选大王!
    “需要有个数据结构能够动态的删除掉已经有的值!”他喃喃自语道,显得神神叨叨的。
    “你怎么了?”女生看他一脸茫然,奇怪的问道。
    “我怎么了……”说到这,男生眼前一亮,猛地拿起一支笔来:“递归也是可以优化的,我们应该用链表试试。”说道这,他立马在草稿纸上开始画起了模型图。
    ……
    “递归方法写出来了,有什么办法能继续优化吗?”小胖子叼着笔,皱着眉仔细思索,他完全是一个人在战斗。而其他三人眼巴巴地看着他这位noip拿580分的大高手。
    这三个家伙是指望不上了,就算他们能理解程序,也不能立马给自己建议。
    “nn的棋盘……”小胖子的思维以不符合他体型惯性的速度开始旋转。
    那么……
    想到这,小胖子直接爆了个粗口:“卧槽!”
    另外嗷嗷待哺地三人吓了一跳。
    “怎么了,文斌。”其中一位女生小声问道,这会儿,小胖子就是她的男神。
    当然,只是这30分钟而已。
    听到“文斌”两个字,小胖子节操碎了一地,连鸡皮疙瘩都起了不少,在他眼里,参加信息竞赛的都是哥们,这么叫他…不能忍!
    “nn的棋盘,不就是正方形嘛,那特么不就是对称嘛,我……得赶紧改下程序,还能优化点。”小胖子喃喃道,他看了看时间,整个人抖了一抖,连忙开始写第二版的代码。
    其他三人在旁边给他鼓气……
    原来,一神带三坑是这种滋味。
    他一边写,一边在心里默默想道。
    ……
    “大概就是这样了。”面对孟梦这种学生,孟响飞快地就解释完了所有的程序,孟梦也迅速理解了其中的逻辑。
    在她看来,这些东西的逻辑还是很简单的。
    “那,哥哥,我想到一个方法,你看看能不能试一下。”孟梦琢磨了一会儿,有些不好意思地说道:“既然数组有下标,那么不用矩阵…不,二维数组,试试能不能用一维数组,下标来表示列,下标0就是第一列!这个哥哥能写嘛?”
    听到妹妹的提醒,孟响眼前一亮。
小说推荐
返回首页返回目录