我們由 1 開始測試, 看看 1 + 2 是否大於或是等於 N, 再看看 1 + 2 + 3 是否大於或是等於 N, 如此每次增加一個數字, 直到 1 + 2 + 3 + ... + i >= N 為止, 如果等於 N 的話, 就將這一串數字列印出去;
接下去以 2 為第一個數字開始測試, 看看 2 + 3, 2 + 3 + 4, .... 2 + 3 + 4 + ... + j;
如此一直做到 N/2 時結束
上面所描述的方法很明顯地有一些浪費, 比方說以 1 為開始的時候已經做過 2 + 3 + 4 的運算, 到了以 2 為開始的時候會又重複做一遍, 這是相當浪費的, 所以我們可以好好規劃一下, 不要發生那麼多次的重複:
最主要的關鍵點在於:
詳細的作法請參考下列測試:
假設 N 為 24 範圍 個數 測試 1: 1 + 2 + 3 + 4 + 5 + 6 = 21 + 7 = 28 ===> 1->6, 6 (6 個數字和), 21(和)(<24) 測試 2: 2->7, 6, 21+7-1=21+6=27 (>24) 2->6, 5, 27-7=20 (<24) 測試 3: 3->7, 5, 20+7-2=20+5=25 (>24) 3->6, 4, 25-7=18 (<24) 測試 4: 4->7, 4, 18+7-3=18+4=22 (<24) 測試 5: 5->8, 4, 22+8-4=22+4=26 (>24) 5->7, 3, 26-8=18 (<24) 測試 6: 6->8, 3, 18+8-5=18+3=21 (<24) 測試 7: 7->9, 3, 21+3=24 (==24)請注意上面解釋中顏色對應的關係
float start, end, elapseTime; start = (double) clock() / CLK_TCK; ...執行程式... end = (double) clock() / CLK_TCK; elapseTime = end - start;算出來時間的單位是秒。
回
程式設計課程
首頁
製作日期: 99/10/19
by 丁培毅 (Pei-yih Ting)
E-mail: pyting@cs.ntou.edu.tw