这是我第一次参加ccf编程的认证考试,说实话,这些题的类型其实跟ACM之类的题还不是太一样,具体体现在题目的不怎么偏算法,感觉更倾向于考察考生的编程能力和复现能力,不得不说代码量是真的大,基本都上百行,写着写着自己都不相信自己了。我是13号才报的名把,也就准备了3天,感觉还是准备的不够充分,尤其大文本处理的题,只有多做,心里才有更好的实现技巧。还有就是要注意各种优化问题,测试数据集基本都很大,我用的是Java,还好时间上要求不是很高。非常扯的就是,你提交上的题,它不运行,导致你心里很虚啊,毕竟一个小小的问题就会导致0分,没错,代码不运行。这就要求我们自己有很高的编程能力和多边界条件的把握能力。
第一题上来就是状态之类的题,是关于微信跳一跳的,状态有3个吧,只要读题认真,多用几个变量记录上一次的得分,上次的状态,基本没问题。也因为这是第一题,我做的也不快,很仔细的读题,生怕错了,自己编了几个测试用例,确定无误,愉快的交了。大概环顾了一下四周,大家好像都对第一题很认真。
第二题球碰撞问题,思路马上好就来了,就是用一个类抽象出球的编号,前进方向,球的当前位置。每过一秒,判断是否有位置相同的小球,有的话,交换前进方向的信息,同时还要考虑球是否处于左端点或者右端点,这时也要变换方向。
第三题url匹配问题,说实话题目我没有弄得很清楚,分不清path到底与str的区别是什么,末尾的/我也不太确定要怎么做,我就按着样例的意思瞎搞了,大概敲了150行,边敲边想思路。大概就是把匹配的规则中地址和输入的地址都解析为一个类,该类不仅包含了path信息,而且还存储了该地址的各个部分的字段,一个用来存实际的字符串,一个用来指示是int型字符串还是文本字符串,然后遍历匹配就好了。
第四题,博弈题吗,我自己跟自己下棋,感觉第一个下的很好赢,脑补了各种思路,什么深搜,广搜都想了,可是越想越复杂,mmmm,说好的图论题呢,或许是我太菜了。
第五题,路径求和问题,我有思路,虽然思路不怎么好,就是用链表集合记录这个树中所有的满足条件的路径,从底部往上遍历比较好实现。然后我们根据指定的操作,也是从大到小进行权值的更新。最后遍历我们之前的路径集合,各种相加即可,但是,可是,我擦,时间马上到了,我最后一分钟提交上去了。然后我本地运行一下,编译错误,Collection.copy函数报了数组索引异常,日,我原地爆炸啊,哎,不说了,都是泪。
一句话,还得学习啊,知识欠缺,眼界狭隘。不知道能不能上300,写这个博客,一是总结一下,以便更好的努力;二是希望能攒点人品吧。努力远远不够,幸好你我还能够继续前行!
==========更新=========
很遗憾,没有上300,果然字符串处理的题没有做好,这个更加暴露我的不足。虽然有点失落,但不至于一蹶不振或否定自己,今年9月的认证等我来继续挑战,加油!