竞赛编程
一位维基教科书使用者建议将这本书或章节合并 到计算机编程。 请在讨论页面 上讨论是否应该进行此合并。 |
这本书是关于编程竞赛,以及你需要知道的知识才能在比赛中取得好成绩。
- ACM 国际大学生程序设计竞赛 (ICPC) 以及相关的区域比赛
- TopCoder Open (TCO)
- TopCoder 大学生竞赛
- Facebook Hacker Cup
- Google Code Jam
- 国际函数式编程大会 (ICFP) 程序设计竞赛
- 每周 TopCoder 比赛
- 美国商业专业人士协会 (BPA) 大会(国家高中职业教育项目)
- 各种在线测评系统 ([1], [2])
人们参加编程竞赛的主要原因是他们喜欢它。 对许多人来说,编程实际上很有趣,至少在他们找到一份编程工作之前是这样,然后他们的兴趣就被磨灭了。 它也是结识与自己兴趣相同的人的好方法。 但对于那些需要额外激励的人来说,这也是提高自己知名度的好方法。 重大的编程竞赛总是受到那些寻找新人才加入他们组织的人的关注,有时候这些人实际上是为竞赛提供资金的人。 高中编程竞赛(例如由 BPA 赞助的竞赛)通常是为了帮助学生为大学或计算机编程职业生涯做准备。 这些竞赛经常吸引来自大学的“球探”,他们希望能给这些学生颁发奖学金。 例如,IBM 目前正在为 ICPC 提供资金,这项竞赛每年要花费他们数百万美元。 他们为什么要为一场编程竞赛支付如此高的费用? 他们认为这是一项投资。 它让他们筛选人才,找到那些将来可能为 IBM 创造更多利润的人。 在 IBM 之前,这项竞赛是由微软为相同原因提供资金的。 那些觉得负担不起 ICPC 高昂费用的组织,开始为更便宜的竞赛提供资金,比如 TopCoder,而 Google 的做法是通过 TopCoder 的技术运行他们自己的竞赛。
入门的第一步是精通一门编程语言,并熟悉文本编辑器/开发环境。 以上所有编程竞赛中常用的两种语言是 C++ 和 Java。 这些语言将在本文档中反复使用。 除了互联网上无穷无尽的免费代码之外,还有许多书籍和教程可以帮助你学习这些语言。
在竞赛编程环境中,编程语言的价值不同于软件工程环境。 虽然良好的软件工程实践不会损害你完成任务,但它们往往会浪费宝贵的时间,而收益甚微。 许多软件工程技术都是为多人协作的项目而设计的,这些项目需要大量时间才能完成。 在编程竞赛中,这些条件不再成立。 大多数情况下,只有一名程序员在完成一项任务,而且完成任务的时间非常有限。 此外,一些编程竞赛测试程序员对特定语言的技能。
TopCoder Open 对 TopCoder 网站的注册会员开放,包括大学生和专业人士,在注册时必须年满 18 岁。 比赛包含三轮在线比赛,最终将进入现场主赛,并包含多个竞赛项目:算法、设计、开发、马拉松、Mod Dash 和工作室设计。 比如算法类比赛中的编码阶段,参赛者可以选择四种编程语言,Java、C#、C++ 和 VB.NET,你可以选择最擅长的语言。 还有其他比赛,让你有机会挑战其他参赛者代码的功能(“欢迎参加 2012 年 TopCoder Open”版权所有 © 2001-2012,TopCoder, Inc. http://community.topcoder.com/tco12/)