1.數組最好保持初始化習慣,且檢查數組初始化在循環內還是循環外,若在循環內需要對數組進行處理,則數組初始化必須放在for循環內。
2.for循環保持好習慣,用括號括起來,以免粗心。
3.if條件判斷要特別小心其邊界值如<=這種情況而不單單是<。
4.編程時變量賦值要細心,如在Z字形掃描中不小心將k寫成了i,結果為20分,一個變量的差距,可以讓CCF少80分。即,注重for循環內變量賦值以及if語句中變量名。
5.思維要高度嚴謹,如一個for循環中,若需要使用到break,就必須考慮到該情況。
6.最近簡單題總是出現一個運行超時的問題,檢查之后,很簡單,原因是,for循環二重或三重中的循環變量都是同一個i,屬於粗心,CCF考試中切記,不可出現這種低級錯誤。
7.編程之前最好將所有可能的測試數據都寫上,以考慮全面,編程提交之前,將程序題目結合代碼再核對一遍,以減少未考慮的情況。如,ISBN號碼這道題,因為'X'這個特殊字符輸出未考慮到,就可能失分。
8.對於定義的變量,一定要保持好習慣初始化,如標記變量f,在命令行選項中,因f未初始化為0,導致整個程序才20分!
9.CCF考試,第一步,認真審題,仔細閱讀題目要求以及輸入輸出限制,至少讀2遍已核對編程中變量定義范圍,如網絡延時,因粗心將maxn定義為10001,其實際應滿足20002,這個錯誤導致提交只有80分!
10.好的習慣可以減少出錯率,比如,在最優灌溉中,因為return ans寫錯成了while循環內,導致一直錯誤,檢查了好久。故,在編程過程中,括號一定要一對配一對,顯得有層次感,這樣就不會出錯。同時,少使用memset函數,最優灌溉中因為使用memset對vis和d進行初始化,導致結果溢出。具體原因不清楚,暫時建議在CCF中少用memset。即用for循環就可。
11.只要涉及排序,直接用sort函數,不要自己去寫排序,如杭電2000。
12.C++中輸出保留n位小數,如n=2,需使用到頭文件以及輸出格式: #include <iomanip> cout<<setiosflags(ios::fixed)<<setprecision(2);
13.輸入數據要仔細小心,如杭電2007,輸入m和n兩個數,求m和n之間的偶數平方之和與奇數立方之和,m未必n小。
14.在CCF第三四題,若涉及到i是全局變量還是局部變量,最好是使用局部變量吧,因為在網絡延時中將i設為全局變量,導致程序AC才50分,而設為局部變量,則100。
15.若程序中涉及到比較大的數,要么用字符串處理,要么用__int64 a處理。杭電上2028求最小公倍數就是因為將__int64 s定義成了int s,導致一直錯誤。
16.杭電2030漢子統計,要明白,漢子占兩個字節,且漢子的ASII是小於0的,即可。
17.考前將杭電2031進制轉換看一下,主要用到遞歸思想。同時,杭電階梯問題,a[i]=a[i-1]+a[i-2];也是遞歸可解決。
18.CCF中,一般都可以使用數組、結構體、標記變量來解決問題,考試時多往這方面想。當對結構體寫cmp函數進行排序時,要使用三個if語句進行return,充分考慮其情況。
19.考前稍微復習下多邊形公式杭電2036,CCF應該不會考這種公式水題。
20.遞推典型杭電2047,考前回顧一下!再如,2048錯排公式,稍微記下,以防萬一,全錯位排列,n個物質,重新排列順序,使其均不在原位
a[n]=(a[n-1]+a[n-2])*(n-1);如2049運用數學公式:從N個數中取M個,取法數為N!/(M!*(N-M)!),然后再乘以這M個數都不在自己位置上的排列數,運用2048題的通項公式b[m],所以結果為b[m]*N!/[M!*(N-M)!]。
21.杭電2072單詞數和CCF一二題有點類似,只不過處理的是字符串,需要高度重視這一道題!考前必看,字符串二維數組知識,利用二維字符數組進行處理。同時,不要忘記在字符串后面加上‘\0'。
22.2068錯排思想可以溫習下,做了很久。其實挺簡單的。但CCF幾乎不考這種題型。
