競賽程式設計
| 一位華夏公益教科書使用者建議將這本書或章節合併 到計算機程式設計。 請在討論頁面 上討論是否應該進行此合併。 |
這本書是關於程式設計競賽,以及你需要知道的知識才能在比賽中取得好成績。
- 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/)