ACM程序设计课程学习小结
ACM的课程已经修了快一个学期了,其中给自我带了不少的挑战。在大一时也听过关于ACM的讲座,国际大学生程序设计,“国际”二词感觉离我非常遥远,但是通过这个学期的学习,发现有很多ACM的题目我完全能独立解决。
我觉得ACM的两个重点就是对代码的熟悉和对数学的精通,光有熟练的编程能力是远远不够的,其中涉及到了太多的数学知识,如质数,完全数,大数操作等等,为了使自己的程序能被ACCEPT就必须用数学的解题思路先将复杂的问题简单化,然后再把简单的问题通过编程实现,即减少了RUN TIME,又能减少MEMERY。另一方面,数学思想的实现当然还要靠编程的实现,一个个式子都要用程序来写,在这点上最初还是遇到了些麻烦,因为选修ACM前,编写的程序对输入和输出要求都不高,几乎都不需要限定格式,但是在ACM的题目里,输入输出都是有明确严格的规定的,比如一个浮点数1.3200,题目要求你输出1.3200你就必须输出1.3200,而不是1.32或1.32000。多一个零或少一个零都是会Wrong Answer的。因此,在解题时对C++的输入输出又等于重新学习了一遍,还是受益非浅的。
再者,通过不少题目的练习,深深的体会到一些经典的算法都是必不可少的,如搜索算法,排序算法等等。虽然C++的STL里有非常使用简单排序函数sort,但是,那毕竟是针对全部类型变量的排序算法,速度上多多少少会慢于针对于一种数据类型的排序算法,因此,经典的算法应该牢记在心,要用时应该做到毫无停顿的编写。
再谈谈课程本身,2分的课程感觉有点微不足道,但是,发现它却十分有意思,特别是上大自己开通了OnlineJundge后,在课余时间对ACM的解题十分热中,一空下来就会看看题解解题,吃饭时也会和同学一起讨论讨论,感觉这样的自学课程已经十分完美的达到了教学目的,学习的热情十分高傲,又逢上学院的第二界程序设计大赛,小试了一把,虽然只有第八名,但感觉自己已经尽力了,而且充分享受了比赛的乐趣。下一界比赛如果时间允许的话还会继续报名参赛。
总的来讲,这门课给我带来的东西还算是比较丰富的,达到了老师的教学目的。希望在今后的岁月里,上大的OnlineJundge能有更丰富的题目,和更多的memebers!
2005-6-7