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