国内外目前有很多程序设计竞赛。过去的竞赛参赛者大多为学生,但随着软件公司开始注重应聘者解决算法问题的能力 ,现在也出现了面向公众的程序设计竞赛。下面这些竞赛值得各位一试。 全国青少年信息学奥林匹克竞赛 关于NOI(National Olympiad in Informatics):http://www.noi.cn/ ACM-ICPC(ACM大学生程序设计竞赛) ACM-ICPC是全球最大的计算机协会ACM(Association for Computing Machinery)每年专门面向大学生举办的程序设计竞赛。ACM-ICPC不同于其他的程序设计竞赛,3名参赛者组成一组,用一台计算机解题。竞赛用时较长,为5小时;要解答的题目也比较多,一般是8到10个题目。这些特点都要求团队既要重视解决问题,又要兼顾时间分配。 国内获奖团队将获得(每年在海外举办的)程序设计竞赛全球总决赛的参赛资格。 TopCoder TopCoder是一家通过众包(Crowd sourcing)开发软件的美国软件公司。公司把软件开发分成几个部分,以竞赛的形式公布到互联网。这些竞赛包括结构设计、组件设计、组件开发到界面设计等多个项目。其中,参赛人员最多的是解决算法问题的算法竞技大赛。在大赛中,1小时15分中内要完成3个算法问题的解答。因为大赛对参赛对象没有严格要求,所以参赛者包括学生、程序员等各式各样的程序设计爱好者。 TopCoder每月举办3次小型竞技赛,每年举办一次名为TopCoder Open的锦标赛。经过多次线上预赛后,以线下的形式在美国举行决赛。TopCoder还会根据大赛的综合成绩对参赛者的实力进行排名。 Google Code Jam 著名的谷歌公司汇聚了众多程序设计竞赛达人,定期举办名为Google Code Jam的程序设计竞赛。同样通过互联网在线方式举行多次预赛后,以线下的形式举办决赛,2008年开始使用谷歌自行开发的程序设计竞赛平台举行赛事。不同于其他只能用C++、Java等限定程序设计语言的竞赛,Google Code Jam对参赛时使用的设计语言没有特定要求。Google Code Jam的这些魅力已使其成为当今参赛人数最多的国际程序设计竞赛。 其他在线竞赛和模拟考试 除了这些具有代表性的竞赛之外,还有许多由公司和网站举办的赛事。这些程序设计竞赛有些是为了模拟考试而举办的,还有些是能够赢得奖金的正式比赛。下列网站都会定期举办竞赛。 TopCoder(http://www.topcoder.com/tc):如前所述,TopCoder的程序设计竞赛每隔1~2周都会在线举办一次。它不像ACM-ICPC的模拟考试时间那么长,因此,对抽空参赛的上班族是来说个很好的选择。 Codeforce(http://codeforces.com):俄罗斯的程序设计竞赛交流平台,是最近比较热门的网站之一。举办比赛的频率较高,像TopCoder一样,比赛结束后公布参赛者的分数成绩。 巴利亚多利德大学的在线评分网站(http://uva.onlinejudge.org):较早的程序设计竞赛评分网站。功能稍落后,但经常举办的模拟考试的考题由ACM-ICPC决赛阶段的裁判们所出。