1. 程式人生 > >花了一個月的時間在一個oj網站只刷了這些題,從此入門了絕大多數演算法

花了一個月的時間在一個oj網站只刷了這些題,從此入門了絕大多數演算法

如果你想入門演算法,那麼我這篇文章也許可以幫到你。 oj網站有這麼多,當然還有其他的。我當初是在hdu上面刷的,不要問我為什麼,問就是當時我也是一個新手,懵懵懂懂就刷起來了。點這裡可以進入這個網站https://vjudge.net/ ![](https://user-gold-cdn.xitu.io/2020/7/25/17385b60f0f423b4?w=720&h=583&f=png&s=460952) 我只在hdu上刷其他的沒刷過。讓我建議的話也是建議你刷hdu,差不多真的。 先給大家看一下我oj網站上的記錄,這是杭電刷題網站,我不是杭電的,我是一個非常非常普通的本科生。連結在這http://acm.hdu.edu.cn/ ![](https://user-gold-cdn.xitu.io/2020/7/25/17385b655286535b?w=720&h=248&f=png&s=143358) 很水的資料提交錯誤(WA)的次數太多,但我確確實實是憑藉它比大多數人都快速的入門了演算法。這裡題目不多而且很多是水題,刷水題也有不少好處能讓你在學演算法題的路上沒那麼枯燥。 大概有哪些演算法呢?這裡列出一些我當時做的題(有些不在上面)。題目都是非常非常基礎的題目屬於入門級別的基本上沒有什麼變形,可以說相當於模板了。 ![](https://user-gold-cdn.xitu.io/2020/7/25/17385b6ccbb37419?w=298&h=702&f=png&s=48040) 接下來分享一下當時我是怎麼刷這些題的(下面的一些數字要是看著比較煩的話可以不用太關注),我沒看任何人的推薦路線去刷這些題(那時候我也不知道還有刷題路線這些東西啊,純新手對一切一無所知)。登陸進去hdu一般情況下是在第11頁開始的(現在好像又從第一頁開始了,從哪裡開始不要緊),也就是題號是2000,當時懵懵懂懂從2000一直刷到了2058。越到後面感覺有些題目難度就上來了(當然這是對我來說的)。有些題即使是看了很多的題解我還是不會,無奈只能跳過。 一路刷到2058題後,我發現題號是從1000開始的,前面還有好多題沒有刷就跳去第一頁刷題。所以後面我就從1000開始刷了。不過這次我學聰明瞭,我沒有全部都刷。我只刷一些比較多人刷的題目,這裡強烈推薦提交量超過30000的記住是提交量不是通過量。刷這些提交量通過三萬的理由如下,這些提交量三萬以上的題目基本上道道是演算法精品,是非常基礎的演算法題,可以當作模板。我一路從1000刷到了2000左右(後面就沒怎麼刷了)。基本上所有的30000通過量以上的題目都給刷了一遍。刷完感覺自己好像變強了,最主要的是自己的思維邏輯提升上來了^_^。 其實刷20000提交量以上也是可以的,那些應該也是一些演算法題,有實力的可以這樣子做。 如果你問我沒有基礎去刷這些題會不會困難,額確實是比較難,不過難也就難一個月左右吧。我刷hdu大概刷了一個月(期間痛苦並快樂著),就刷完上面所列的那些題目了。刷這些題的時候我才剛剛開始知道演算法大概是個什麼東西。我的基礎只有大一刷的一些基礎C語言題目,期間思維的轉變很關鍵。開始基本上很多題目都是找百度的。每道題目看了好多個人的題解,大多數時候看的一臉懵逼,不過還是慢慢堅持下來並且適應了。 如果你問我一個月夠了嗎的話。一個月是真的夠了,只要你吧一天的主任務放在刷題上真的可以入門這些非常有用的演算法,從此飛黃騰達(其實是掉進了坑哈哈,不過為了錢一切都值得)。如果你再肝一點半個月估計也可以搞定。 這裡再分享一下我看題解的一些小技巧。開始刷到演算法題(那時候並不知道這些題是演算法題)是真的痛不欲生,百度題解一臉懵逼,看了好多題解還是不太懂這道題,不過看多一點題解就是我要分享給你的小技巧。剛學的演算法題,隨便找一些自己認為比較好的(推薦程式碼簡潔的),然後就去認真的看,看不懂沒關係一遍很難看懂的(對未知感到恐懼很正常,但心態放平不要畏難真的很重要,這不是雞湯,不少人應該親生經歷過),可以不用繼續看他的題解,去看其他人的題解,認真看個幾個人的題解,慢慢的你就會對這個演算法有一個大概的瞭解,看著看著你就會豁然開朗,感覺看的題解差不多的時候,就從中挑一個自己認為比較簡潔的程式碼去看(記得多問幾個為什麼),一定要每一個細節都搞明白,為什麼這裡是這樣子,那裡是那樣子。多動手在紙上模擬(這樣子不容易開小差)。 曾國藩說過這樣一句話“大處著眼,小處著手;群居守口,獨居守心”。我的刷題方法似乎在一定程度上吻合了“大處著眼,小處著手”這八字真言哈哈。這八個字放在哪其實都是可以的。不讚一波嗎,喜歡的可以關注一下我的公眾號**玩程式設計地碼農**啊。 如果你問我現在開始學的話晚了嗎?你能看到我這篇文章,那就說明不晚,至少你正在找一個讓自己變優秀的理由。我沒有理由給你,但我用我的實際行動告訴你,只要你堅持一個月,你一定會變得更優秀。相信你學完這些演算法會找到讓自己變優秀的理由(哪怕是為了錢也好)。 如果你不喜歡刷題,想快速入門演算法我覺得是不太可能的,學演算法一個比較好的辦法就是持之以恆的刷題。 這些題量多嗎?真心不多,堅持一個月,即使是你沒有任何的演算法基礎,只要你會一門語言,就ok啦。當時我是大一第一學期學了C語言,寒假邊學C++邊刷hdu的。 這篇文章也是一時心血來潮,想著把自己的經歷讓大家看見,希望大家能少走點彎路。 最後再談一下我學了這些演算法之後的一些成效,這些演算法學完之後不久,我就陸陸續續去學習其他資料結構與演算法了,例如什麼紅黑樹啊,B樹啊,跳錶啊之類的。新的資料結構與演算法難度變大了,但是我花的時間卻不多,很多知識都能夠不費太多精力就看懂,這可能是我刷題之後思維的提升和能力的提升的一種表現。相信我花一個月去刷刷題目,刷完之後你會有意向不大的收穫。 逼迫一下自己,一切都是從這裡開始。 如果覺得有收穫,不妨花個幾秒鐘點歌贊,歡迎關注我的公眾號**玩程式設計地碼農**,目前專注寫資料結構於演算法相關