2011年5月22日 星期日

讀書筆記: Art of Programming Contest for uva 開始解題之前的提醒

第一章主要是給打算要進入程式競賽的人一些小提醒。
關於解題
  • 新手一開始最好先挑簡單的問題解,並想辦法用短時間快速解掉。
  • 如果花了很多時間也不要氣餒,你只是練習的還不夠。
關於程式
  • 只挑"一個"語言深入鑽研,透徹了解該語言的各種細節,讓它成為你的武器。
  • 高手解題時,思考和規劃會先用掉 45% 的時間,而最後的 45% 時間用來測試和除蟲,實際上只用10%的時間 coding。
  • 學會用 I/O 轉向,就不需要每次都浪費時間用手輸入測資
  • #ifndef ONLINE_JUDGE
    freopen("INPUT_FILE", "r", stdin);
    freopen("OUTPUT_FILE", "w", stdout);
    #endif
    
關於算法
  • 不要只滿足於一個解法,盡量嘗試用多種不同方法來解同一題。這樣你才有機會比較不同演算法之間的差異,或碰著原本不會遇見的錯誤。
  • 演算法是一串解決特定問題的步驟,多學學各種不同的演算法。
  • 比賽時盡量選最簡單的演算法,並且平時作熟,比賽的時候沒有時間設計複雜的演算法。
  • 現在的電腦很快,迴圈跑個一百萬次也不需要多少時間的,不要斤斤計較小地方。
把程式寫的簡明
  • 少用複雜的程式語句、少用動態分派記憶體、少用指標。
  • 把每個變數的名字都命名清楚,像 Right_Most ,不要用縮寫 rm。