程式比賽技巧 (from http://windtop.yzu.edu.tw/~visor/mt/archives/2003_03.html )

      1.多用陣列
      2.排序
      3.開檔讀檔
      4.字串處理
      5.寫程式過程
      6.分配題目
      7.測試資料

      1.多用陣列
      能用陣列解決的問題,儘量用陣列解決,
      像是堆疊,佇列,二元樹等等等,都可以用陣列來處理,
      節省寫程式的時間,比賽是看結果不看程式碼的。

      2.排序
      排序題目有特地要求要寫出哪個排序演算法,不然可以使用標準 C 函數庫,
      省時間又不會出錯。
      NAME
      qsort, heapsort, mergesort - sort functions
      LIBRARY
      Standard C Library (libc, -lc)
      SYNOPSIS

      #include
      void
      qsort(void *base, size_t nmemb, size_t size,
      int (*compar)(const void *, const void *));
      int
      heapsort(void *base, size_t nmemb, size_t size,
      int (*compar)(const void *, const void *));
      int
      mergesort(void *base, size_t nmemb, size_t size,
      int (*compar)(const void *, const void *));

      簡單的數字陣列排序範例如下:
      int array[20] = {3,1,2,5,6,1,2,7,5,9,4,1,2,3,5,7,9,4,1,4};

      int cmp(void *x,void *y)
      {
      return *((int *)x) - *((int *)y);
      }

      qsort(array,20,sizeof(int),cmp);

      升冪降冪排序只要對調 x 跟 y 即可
      3.開檔讀檔
      一定要學會,善用 fscan,fgets,strtok,atoi,atof
      fscan 用於固定長度的的資料,fgets 和 strtok 用來對付不定長度的資料
      atoi 字串轉整數,atof 字串轉浮點數

      fgets(buf,sizeof(buf),fp);
      ptr = strtok(buf," \t\n");
      do
      {
      ......................
      // ptr 一次指到一個資料
      } while(ptr = strtok(NULL," \t\n"));

      4.字串處理
      strcpy,strcat,memset,sprintf
      使用範例:
      strcpy,strcat 不用多說了
      如果要產生一個字串,要 20 個 '-' 字元,一般人都會想用 for 來處理,
      其實不用那麼麻煩,下面兩行就可以處理完畢。
      char buf[21];
      memset(buf,'-',20);
      buf[20] = '\0';
      夠簡單吧,memset 還可用來初始化陣列,如:
      int array[20];
      memset(array,0,20 * sizeof(int));
      這樣就可以把 array 設定成都是 0 的陣列。
      sprintf 用來標準輸出到字串內,結果就是跟 printf 印到螢幕一樣。


      5.寫程式過程
      盡量把每步的結果印在螢幕上,這樣比較好知道哪個步驟出錯

      6.分配題目
      一拿到題目不要馬上開始寫,先看完全部的題目,除非題目簡單到你看到題目
      就可以開始寫到完,不然最好研究好方法在開始動手,這時另一人就看其他題目,
      開始想好演算法,等對友寫完那題再開始寫。
      如果做題過程中,有遇到重大錯誤沒辦法一下找出來,最好先換人寫,
      不要浪費時間在 debug 上。

      7.測試資料
      一開始應該會給一些基本的測試資料跟正確答案,首先先把程式寫到能通過那些測試,
      再來自己加一兩個資料,資料盡量以特殊的資料為主,如果特殊資料都可以過關,
      那就送件等待結果吧。
      注意程式資料的範圍,往往在極端的測試資料就是特殊資料。

      特別注意:

      1.如果有一道題目,他叫你寫程式說"如果有符合的答案就輸出該答案 沒有就輸出『no answer』
      當你來不及寫這題的時候,就直接寫printf("no answer");
      那五個測試資料通常就會矇到一兩個。

      2.台北市資訊能力競賽的筆試,一般來說做前幾屆的考古題。如果有不會的再去查資料,因為筆試成績佔的百分比較低 一般還是以準備上機優先