ACM常犯錯誤小結

2021-06-16 14:07:35 字數 1572 閱讀 3731

1.未考慮各個資料的溢位;

2.輸出格式與題意不同,出現誤差;

3.使用陣列時,在第一次使用後,未對陣列清零;

4.在判斷時,未考慮或考慮不全 對於是否改在不等式中取等號;

5.混淆迴圈,使得不能進入迴圈或出不了迴圈;

6.對於二維陣列,混淆行列;

7.對於動態變數的改變,考慮不足;

8.基本的數學概念,例如:根號內為正,素數不包括1。。。

9.高精度資料求余時,可能會出現100001%100!=01but==1;

10.注意乙個陣列的起始處應該在哪。

11.多次提到乙個數的時候最好用巨集定義。

12.sscanf是括號內(str,"%d",&n):str陣列內的數字移向n,而sprintf(str,"%d",n);則剛好相反。

13.最基本的資料公式輸入錯誤(雖然機會挺小的,但**一多就容易出狀況- -#)。

14.printf("%*c",n-i,c)代表了在輸出c這個字元之前有n-i個空格。

15.%*c代表對於輸入資料讀入但是不做處理。

16.採用for:i->v.....0是為了防止回溯,出現一組資料多次使用。

17.dp其實和遞迴還是有那麼一點相通的,有時候可以試著用dp的想法去做遞迴。

18.光練不學,傻把式;光學不練,傻把式。

19.oxfffff代表的是很大的值,f指的是16進製制中的15。

20.堆和棧的操作有點類似,都是empty()、pop()、top()、push()、size()。

21.全排列next_permutation hdu 1027 pku 3187 1146 1731

全排列雜談 分類:stl 

這個函式可以計算一組資料的全排列

假設數列 d1,d2,d3,d4……範圍由[first,last)標記,呼叫next_permutation使數列逐次增大,這個遞增過程按照字典序。若當前呼叫排列到達最大字典序,比如dcba,就返回false,同時重新設定該排列為最小字典序。

返回為true表示生成下一排列成功。

另外,庫中另一函式prev_permutation與next_permutation相反,由原排列得到字典序中上一次最近排列。

22.gets()會自動處理掉輸入進來的'\n'。

23.scanf()會自動處理掉輸入進來的'_'——空格。

24.while(gets(str),strcmp(str,"end")!=0)   ==   gets(str); while(strcmp(str,"end")!=0);

25.memset(a,127,sizeof(a)); a[0-->n]=很大的數。這個知道就好,千萬不要使用,教訓啊,用這個我提交了13遍2293啊,鬱悶吶!!!!

26.stl標頭檔案裡面含有int_max這個數。

27.10000000000000ll是long long 中的最大值, 即2^63  

28.map是紅黑樹。很高階,但是很慢,他的每個節點儲存的是乙個字串,故做不了hdu的1075。

29.cout輸出的時候,2.30會變成2.3,所以用cout輸出時會耗時較printf多

30.對堆進行操作的時候,插入是從下往上更新,刪除是從上往下更新。

語言常犯錯誤積累

1 層與層間的花括號不對,要麼少了要麼多了,寫時也不對稱 錯誤寫法 正確寫法 main main main 2 忘記定義變數就直接使用 main 3 變數沒有賦值就引用 main 4 賦值超出資料型別的範圍 5 scanf輸入時忘記寫取地此運算子 錯誤寫法 scanf d s 正確寫法 scanf ...

語言常犯錯誤積累 二

語言常犯錯誤積累 二 1 結構型別定義時忘記在右括號加分號 這主要是很多人在編寫復合語句太多而誤把結構類定義當成復合語句了,所以往往在定義完後忘記加分號結束 struct date 2 把結構名當作變數名來使用 這可能對於初學者而言是常犯的錯誤,在程式語言中所有型別都需要相應的變數來呼叫,如果這裡你...

keil 常犯錯誤處理

1.提示 unresolved external symbol symbol c 很大可能相應 忘記加入到 組裡面!2 一直提示我重複定義函式,搜了一下網上,似乎只有變數的重複定義的問題啊,怎麼函式也有重複定義的問題!最後刪了uart.c和uart.h,然後編譯成功。最後仔細一看,竟然main.c中...