“回溯法又叫做试探法,实际是一种选优的方法,而这个n皇后问题,其实应该算回溯法中一个经典的案例。”孟梦一边看着哥哥一边解释道。
孟响连连点头。
请开始你的表演。
“回溯法的基本思想就是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。而这实际就是穷举出所有可能,然后从中找出满足要求的可能或者最优的情况,从而得到解。”
孟梦说完,一边在纸上画着一边说道:“我们用一个n*n的矩阵来表示棋盘,然后我们把当前行和当前列分别设为第一行和第一列。”
“矩阵那个不是没学……”孟响小声问道。
迎接他的是中性笔的笔尖。
仿佛他只要敢继续说话,妹妹就会杀哥证道一样。
他连忙闭上了嘴,脑中飞快思考。
这不就是数组嘛。
说得这么高大上!
孟响同学心里不服气,但是人在笔尖下,不得不低头。
孟梦见哥哥害怕,满意哥讲起如果用回溯法,怎么解n皇后问题的思路来。
教室里并不安静,高一高二所在的前排座位,大家的议论声,声声入耳,时不时还有两人之间的不同意见的争论声。
高三四大天王都是孤军奋战,一个个正在埋头书写。他们选择的方案都是先画出模型,然后再从最简4皇后开始往下推一两次之后写代码,写完代码之后再慢慢优化,毕竟,这种题目他们几乎都有练过,虽然时间可能比较久远,但是经历了多次大赛以及长久练习的他们,无论是经验上还是代码能力上,都比高一高二的学生只强不弱。
张栋梁走下讲台,慢慢围着偌大的多媒体教室转了一圈,两圈。看了看身旁正在讨论的众人,他觉得自己的这个职业选择非常正确,他喜欢和学生们待在一起,更加喜欢中学的这种朝气蓬勃。
“所以呢,这个回溯的解法基本就是这个样子。只是,如果用不同的数据结构,或者是检查时候的条件不同,应该效率不同。”说完后,孟梦放下了笔。
孟响听完妹妹说的方法,沉思了几秒钟之后,眼前一亮。
显然,他已经理解了这个方法的思路。
他抬起头来,看到张老师正站在妹妹身后看着两人的草稿纸。
“张老师好。”孟响下意识地说道。
听到哥哥的话,妹妹吓了一跳,回头看到张老师正站在自己身后,连忙也跟着给老师问好。
张栋梁笑着点了点头,他已经站在孟梦身后听了老半天了,这个小女孩讲解的思路很清晰,至少,在数学思想和算法选择上没有什么问题。
其他的,就只看怎么写代码了。
虽然方法和思想上选择是正确的,但是数据结构选择和优化策略不当,写出来代码的运行效率会天差地别,甚至几百倍上万倍的差距。
“你们继续,讲得非常到位,好好写代码。”张栋梁见两人发现了他,笑着鼓励道,然后继续朝后面走去。
孟梦不好意思的低下了头,她可不会写真代码,而书上大部分都是伪代码,并不影响她阅读。
“哥哥,你听懂了吗?”孟梦对哥哥问道。
孟响这次很有自信地点了点头,他看了看时间,才刚刚过去8分钟而已。
“要不,我们也试试写写?”孟响有些手痒,小声提议道。
孟梦从口袋里掏出了一只道:“可是,我不会写代码的。”
孟响接过笔,听到妹妹的话之后,他又一次心理平衡了,小天才妹妹不会写,现在就轮到他,孟·白班编程·响发挥的时候了。
“没事,我会写。我一边写一遍解释给你听,你帮我验证思路有没有错误,我写,你把关。”
听到这话,孟梦也眼前一亮。
听上去,是个不错的主意。
而且,她是和哥哥一起在努力!想到这,她心里有些甜甜的。
“那好的嘛!但是,你要是代码格式什么的错了,可不能赖我。”孟梦甜甜地答应之后,又说道。
“哼!放心,格式什么的这辈子都不会错的。”孟响同学对妹妹这种不信任自己的行为予以官方谴责!他这两个多星期,写了至少150张a4纸的代码,而且还是用的双面写加八号字体。从一开始的错误百出,到现在一天都出不了几次错,他可是很努力的。
c语言的语法规则和基本头函数在他眼里,就像rb小电影里那些著名影星一样……扯远了。
“那我就相信哥哥一次吧。”孟梦虽然有些狐疑,但还是打心底里相信了哥哥。
两人翻过一页,一边讨论一边开始写了起来。
时间一分一秒的过去。
“李神,怎么样。”一个男生写完代码之后,把草稿纸递给旁边的一个高高大大的男生。他头一天晚上才看了这个题目,此时强行靠着记忆在十多分钟内写了出来。虽然方法不是最好的,但是至少他们组也有个可以上交的东西了。
“我看看。”被喊为李神的男生接过草稿纸,和另外两人一起开始细细看了起来。
……
“这个我不应该用二维数组。”高三参加集训队的那名学长写完之后,心里运算了几次之后,立马就看出了问题。
他使用的是二维数组来表示棋盘,但是写的函数使用次数太多了,让他觉得非常笨重,效率极差。
发现了问题之后,他开始第一次修改代码。
……
“我只会递归,这个真