1. 程式人生 > >ACM 書中題目專題總結

ACM 書中題目專題總結

  ACM 書中題目專題結束了,通過這一個專題的練習,掌握了一些寫程式的技巧,同時也發現了自己在寫程式中出現的問題。在寫程式時發現自己總是對題意理解不夠深刻,要花費很長時間才能讀懂一個題目,對一個題目總是感覺無從下手,知識掌握的不夠多,STL應用不夠熟練,對寫出的程式思考不夠嚴謹,導致總是提交失敗。

  第一個專題的練習使我瞭解了STL,以及STL的應用。STL就是標準模版庫,其中非包含了一些簡單函式,有向量(vector) 佇列(queue) 堆疊(stack) 集合(set)等。

 棧:是一種先進後出的陣列結構,她有一個出口,只能操作最頂端的元素。empty() 表示棧內是否為空; size()返回棧內元素個數;top() 返回棧頂元素值; pop() 移除棧頂元素; push() 像棧壓入一個元素。

佇列:市一中先進先出的資料結構,從底端加入元素,從頂端取出元素。 empty() ;size(); pront() 返回佇列內下一個元素; back() 返回對內最後一個元素; pop() ;push()。

動態陣列:empty() ; size() ; push_back() 將元素插入最尾端; pop_back() 將最尾端元素刪除; v[i] 類似陣列取第i位置的元素。

sort: 排序,預設從小到大排序;sort(begin,end,cmp)。可以通過自定義,改變排列規則。

upper_bound、lower_bound:upper_bound(begin,end,value) 返回>value的元素的第一個位置;lower_bound(bagin,end,value)返回>=value的元素的第一個位置。

set和multiset:set和multiset 會根據特定的排序準則,自動將元素排序,兩者的不同之處在於multise可以允許元素重複而set不允許於元素重複。

map和multimap:所有元素都會根據元素的鍵值自動排序,map的所有元素都是pair,pair的第一個元素都被視為鍵值,第二個元素為實值。map不允許兩個元素有相同的鍵值,但multimap可以。

優先佇列(priority_queue):一個擁有權值觀念的queue,自動依照元素的權值排列,權值最高的排在前面。預設情況下,函式是利用一個max_heap完成的。

   通過這次訓練,對程式設計有了大體的概念,感覺自己寫程式碼的能力強了很多,對稍微複雜的題目有一定的分析能力,解決問題的能力也提升了許多,對提交出現的問題也有了較強的應變能力。同時學會了運用一些簡單的函式來簡化程式碼,除錯的能力也提升了一個檔次。通過對ACM的學習,感覺自己知識面廣了很多,邏輯能力提升了很多,獨立思考能力得到了強化,學會思想的靈活運用。

   ACM第一個專題雖然已經結束,但這個專題尚未完成的題我會繼續嘗試,提升自己讀題,解題的能力,強化對STL的應用。以後的訓練我會投入更多的時間來練習,增強自己寫程式碼的能力,熟練運用各種函式,