很快,高三的那名学长就讲完了自己的代码,整个过程中非常流畅。
最后,张老师总结道:“这位同学讲解的非常棒,思路也很清晰,并且代码没有出现什么错误。”
随着张老师话音落下,多媒体教室里掌声响起,那名学长自信地走下了讲台,而张老师则最终给他了一个20分。
台下的学生们爆发出一阵阵惊呼。这个分数就是现在所有人之中分数最高的了,也是这次竞赛中分数最高的了。
至于最后一组?
大家已经忘记了还有最后一组。
前四名已经确定了,高三两组,高二两组,高一全军覆没。如果那名李神所在队伍在代码上没有出现错误的话,可以挤掉高二的一个名额。
张老师双手平放,示意大家停止掌声,然后拿起了最后一张写满代码的草稿纸。
“那么,现在就剩最后一组了,我们欢迎,高一梦响队来讲解他们的代码。”在念着名字的同时,张栋梁也飞快的瞟了一眼草稿纸上的代码,看了几眼关键的函数之后,他就明白了这个队伍的解题思路。
和刚刚那名高三学生的方法基本一致,写法上更加优美一些,如果讲解不错的话,他也打算给这个队伍20分。
这么短的时间内能想出这个方法并且写出来,在他看来已经非常不错了,正常考试时,都是一两小时一个题,而且还是用键盘的情况下。毕竟,手撸代码和键盘写代码之间的差别对大部分人来说还是很大的。
教室里再次响起了掌声,只是相比刚刚那名高三学长下台的时候的掌声来说,显得稀疏了一些,特别占了绝大多数的高一学生,已经对孟响两人不抱希望了。毕竟他们之前都没在电教室看到过这两兄妹,一看就知道两人是新手。能在这么短的时间内写出代码上交并且不出错已经证明了梦神很有天赋了,至于能为高一争一个前四。
那......有点儿痴人说梦了。
孟梦推了哥哥一把,孟响听到自己的名字后迅速放下了手中写好代码的草稿纸,站起身来。
“哥哥加油。”孟梦还是鼓励道,虽然他们的解题方法和高三那名学长的一致,不能展示自己和哥哥刚刚想出来的更好方法让她有些遗憾。但是现在也只能先把已有的代码讲好,拿到一个名次才是最终要的。
“嗯~~”孟响用力点了点头,他心里已经有了打算。
走上讲台,孟响从张老师手中接过了自己写满代码和注释的草稿纸。
同时从电脑讲台上拿起一只黑色的涂鸦笔。
“那现在开始吧?”张栋梁问道,只是他有些疑惑孟响为什么要拿笔。毕竟讲解代码只需要把草稿纸放在投影上然后依次讲解就行,并不需要写和画什么。
孟响看了看身旁的那块白色小板,稍稍计算了一下尺寸,心里笃定,同时点了点头回答:“好的。”
随着张栋梁开始计时,孟响没有浪费时间,他把草稿纸放在投影仪下,背投上出现了他的代码。同时,他一手拿着笔一手拿着话筒快速说道:“现在大家看到的是我们组的解法,其实我们组的解法其实和刚刚那位学长的差不多,但是刚刚我们组员突然想出了一种更加好的解法,所以我现在打算讲解我们新的解法。”
底下坐在靠前的学生们嘴巴都张成了“O”型。
同时还有一些骚动,大伙听完孟响的话之后,开始窃窃私语。
孟响说完,就快速走到白色小板前,一边写着一边开始讲解:“我们组心新想到的是位运算法,因为时间原因,我一边写代码一边讲解。”
而张栋梁也被位运算法勾起了好奇,因为这确实是目前N皇后问题的最优解法。白书上就有这个解法的例子。但是例子归例子,理解起来可不是那么容易的,更别说讲解了。
孟梦坐在底下捂着脸趴在桌子上,不断地磨着牙。
哥哥怎么可能写得完,只有两分钟时间,完蛋了,她们要得0分了。
想到这,孟梦就有股想上台把哥哥拽下来自己去讲解的冲动。
但是想了想,她不会代码,只能放弃。
得0分,好丢人呀!
孟梦的小脑袋不断往自己的手臂弯里钻着,一副非常苦恼的模样。
孟响一边写代码,没有丝毫停顿,一边讲解道:“这个算法的核心就是使用bit数组来代替以前由int或者bool数组来存储当前格子被占用的情况。”
“程序中主要需要三个bit数组,每个对应的是N皇后格子的一列和正斜列和反斜列。”孟响一边说,一边写了一个函数:
void test(long row,long ld,long rd)......
“其中row表示一列上是否有皇后,如果有则是1,如果没有就是0,ld和rd分别表示正斜列和反斜列是否有皇后,接着我们要对这三个参数进行或运算,求得所有可以放置皇后的列,对应位是0。”
大伙瞪大了眼睛,看着孟响手中飞速舞动的黑色涂鸦笔,一行行代码整齐的展现在白色小板上。
“然后,我们要对结果取反,取反之后与上全1的数,来求得当前所有可以放置皇后的位置,对应列数改为1,也就是求取当前哪些列可以放皇后。”说到这,孟响连续写下了数个表达式。
大部分学生只能懵逼的看着孟响一边讲一边写代码,只有小部分人能够勉强跟上孟响的思路。毕竟,即便是自己去理解这种位运算,没有十多分钟也很难理解,更别说这短短的两分钟之内了。
而张栋梁站在一旁看着孟响,在他看来,目前孟响的代码还没有什么错误,讲解对他来说也非常详细。
“pos&-pos的意思就是取最右边的1再组成二进制数。”
“然后......将pos最右边为1的bit清零。”
“......”
“row所有位都为1时,即找到了一个成功的布局,然后我们记录下来,回溯。”
“然后我们考虑棋盘的对称性......”
孟响的语速越来越快,手中的书写速度也越来越快,随着时间逐渐走向终点,在众人以及妹妹惊讶的眼神中,他赶在时间到达前,写完和讲解完了位运算的方法。
小说推荐