C/C++編程基礎演算法總結

來源:互聯網
上載者:User

標籤:整數   字元   演算法   最大   日期   好的   運算   記憶體   區間問題   

使用王道機試指南的電子書也有幾天的時間了,終於看完了第二章《經典入門》,下面就來總結回顧一下最常見的六種演算法/問題,為下一步刷題打好堅實基礎。

套路是:先概述這種題型,然後總結我學到的和易錯點。

************************************題目都是九度OJ上的**********************************************

先提一句!時間複雜度!王道一直在提這一點,必須有根據題目中變數的範圍來估算時間複雜度的意識。

一、排序問題

  • 基本的冒泡、選擇排序自不必說,必須掌握。
  • C語言的qsort,C++的sort,我都是第一次知道。。
  • sort的兩種使用方法,要麼重載<運算子,要麼自己寫cmp函數,總之就是讓sort函數知道比較規則是什麼。cmp函數的寫法,比如降序排列,第一個參數比第二個參數大時返回true就好。
  • 1061題,結構體排序,也沒啥,還是用sort,可在結構體裡面定義重載運算子,即規則定義在裡面。也可在外面寫cmp函數。注意重載的寫法。
  • 1185題特殊排序,其實很簡單,如果逆向思維的話:先排序,自然最大的就出來了,而且題目沒說清刪一個還是全刪,我剛開始全刪了,一直WA,結果根本沒那麼複雜。。。刪一個就行。
  • 1023,自己寫的代碼總是RE,至今未明。但大概知道,比較規則應寫的簡潔明晰,不要太長更不要跟全域變數什麼的扯上關係。。我目前只能這麼理解了,說的不對的話歡迎大神給我指出錯誤

二、日期類問題

  • 重要的思想:預先處理。解決區間類問題的統一思想:把原區間問題統一到固定起點的區間問題上去
  • 1096,第一次接觸類編程。可以用struct定義類,類裡有一個成員函數,即一個方法。大記憶體數組定義成全域變數。
  • 1043,注意取餘運算的應用。

三、Hash

  • 適用的類型:某變數範圍有限、固定、有特點。1431大範圍整數排序、1156根據讀書判斷潛在朋友、1088拔樹 這些問題都適合Hash

四、排版題

兩類,一種是簡單排版,即幾何規律與輸出順序有聯絡。另一類難一點,沒聯絡,要先排版再輸出。1161題Repeater,簡直虐心。。關鍵是找到規律,迭代時候注意分不同情況,不要有衝突

五、尋找

  • 線性尋找:遍曆,簡單
  • 二分尋找:先用sort變成有序數組,再尋找。複雜度會從n變log。典型條件:while(a<=b)

六、貪心演算法

思想很簡單,就是總擷取最好的。(最符合目標要求的)但是有時候不容易找到合適的貪心策略

  • 1433,碩鼠換糧題,抽象成為一個以性價比為貪心標準的問題。即:總是優先買性價比最高的商品,直到金錢花完或者這種物品被買完,那就換性價比次高的,以此類推
  • 1434的今年暑假不AC,目標是儘可能多的看到完整的節目,那麼貪心的標準是以結束時間最早的節目優先,因為這樣總是能節約時間以增大更多的節目機會被看的可能性。1435的迷瘴,1436的修牆的貪心標準比較明顯。

貪心演算法中,while迴圈的判斷條件要仔細斟酌,明確要輸出幾個變數,有幾個變數作為輔助,初始條件是什麼,迴圈過程中會怎麼樣變化等等。

七、我的常見錯誤

  • 最坑爹的肯定是scanf()函數,首先它是有傳回值噠,返回成功讀取變數的個數;傳入變數地址雖然很小兒科,但為了不忘記再說一句。。格式控制字元串中的一個空格可以抵消輸入中的n個空格,6不6.尤其注意輸入字元格式設定的時候,注意空格屬不屬於待輸入字元之內(排版題)屬於的話格式控制字元串中不能加空格;要不要用getchar()吸收。。注意斷行符號符也是需要吸收的,尤其排版題要注意。。。
  • 常見WA的原因
  1. 標誌位!標誌位!計數器!計數器!是不是沒清零!!?!我最愛犯的錯誤,沒有之一。甚至有時莫名其妙的話你就應該想到看看標誌位清沒清,試著清一下。。。
  2. 演算法是否有錯
  3. 邊界資料是否有錯
  4. 是不是多組測試案例你只按一組編的
  5. 是不是某變數/數組聲明位置不對,導致第一次用完之後曆史資料沒清除,本質跟1一樣。所以變數隨用隨定義。

以上就是一周以來的學習總結。想要進一步強化編程,以上基礎必須打牢。

C/C++編程基礎演算法總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.