記錄藍橋杯校內選拔複習

總體來講,假複習。回顧了筆記和算法競賽入門的ppt和自己大二第一學期寫的算法題,但都是大概去理解了下,感覺就像高中考數學似的,去看看概念,然後到考試之後啥都不會。儘管是假複習,但還是有點心得的。

心得:
一、做算法題
1、寫前,理解題意,得出思路(用手寫來模擬,然後想下大概用什麼算法或者數學知識)
提醒:手算會了,一般寫代碼就會了,只要換下思維。
2、寫時,每一個邏輯都要驗證(比如循環的開始和結束)
3、寫後,仔細檢查下算法
二、選擇算法
1級、暴力,dsf
2級、貪心
3、遞歸、回溯、動態規劃
4、數學知識
其他:堆棧

三、算法理解
1、動態規劃:自下而上,大問題分解爲小問題,且大小問題有關聯。
例題:石子合併,割繩子,數塔問題等等
2、回溯法:可以放回+dsf
例題:迷宮,n皇后等等
3、貪心算法:判斷是不是類似用最短的時間拿最多或者最少的東西
例題:單源最短路徑,旅遊商問題
4、遞歸:通過重複將問題分解爲同類子問題而解決問題的方法
例題:n!,全排列,構建二叉樹
5、聯繫
①動態規劃,遞歸
與子問題是否相關
②動態規劃,回溯法
是否可以返回
6、數學
①10由5和2組成,算零個數
②判斷數字有無0到9,用除法運算和模運算
③圖問題,可以運用改變圖
④求餘問題,中國剩餘定理
⑤a和b的最小公倍數c和最大公因數d的關係:ab=cd
⑥輾轉相除法求得最大公因數
⑦與二進制有關的問題可以用位運算解決,或|,與&,非~,異或^,位移<<和>>
⑧概率

四、思維
計算機機思維是整體性思維
例:單源最短路徑算時,就算無路的也要算上去
全球變暖是一個一個循環下去

五、考試注意:
1、for(int i;)是錯誤的
2、注意數據規模

六、不足
1、算法設計技術不行,一般一道題就是一天

七、函數
1、字符串有關
頭文件<string.h>
①strlen
②strcat
③strcmp
④strcpy
2、數學
頭文件<math.h>
①sqrt
②abs
3、快速排序
頭文件 <stdlib.h>
qsort(a,n,sizeof(a[0]),cmp)
cmp(const void * a,const void * b){
return (int *)*a -(int *)b}
3、隨機函數
頭文件<time.h><stdlib.h>
srand((unsigen)time(NULL))
rand()/(RAND_MAX+1)
rand()%n

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章