五月二十八号,坐上了开往北京的火车。第一次到北京参加全国性的比赛,第六届蓝桥杯决赛,心里面还是很兴奋的,同时也有一点点紧张,还是希望自己能拿一个比较好的成绩。提前一天到,大家看了看考场,比赛地点在北大计算中心,30号下午一点开始了正式的比赛,比赛时间四个小时。
比赛题目类型和初赛差不多,有结果填空,代码填空和程序设计三种类型。但是题量少很多,一共只有六道,分别是两道结果填空,一道代码填空,三道编程大题。我参加的是C++本科A组,比赛结束了,凭印象还是先把题目总结一下。
A.结果填空
题目大意:有一个2×5的矩阵,将1~10十个数填到里面,保证满足下面条件:右边的数一定比左边的大,上面的数一定比下面的大。
题解:这是一道简单的深搜,注意添加visit数组标记,每个数字只能使用一次。可以使用输出中间结果来判断算法正确性。
B.结果填空
题目大意:类似于九宫格,现在有一个4×4的矩阵,要求将1~16填入,满足每行每列以及两个对角线的和都是相等的。
题解:
这也是一道深搜,但是不减枝的话就跑得太慢了。我们可以在每行排完之后就进行一次判断是否满足和等于34,当排完后在最后判断每一列和对角线是否满足。按照简单的减枝,还是跑了好一会儿才跑出来。但是在这种题上面不能浪费太多时