因為學習演算法參加ACM,還是為了參加ACM學習演算法?究竟應該如何學習演算法?

演算法 ACM


謝邀。

我是覺得好玩才搞acm的,和演算法沒啥關係。我覺得如果目只的是學演算法的話,還是不要搞ACM,畢竟這可能是大學生產出:投入最低的競賽了……

為了學演算法而學演算法的話應該就看懂演算法原理會寫就好了吧,acm不僅要看懂原理還得會各種運用,大概如此吧……

個人理解,作為一個常年被隊友帶飛的我也不知道我的理解對不對orz……


學習演算法不用參加ACM,因為如果你為了學習一個東西參加一個比賽的話,就會變得十分「趨利」,到頭來就會發現很多東西都變味了,不僅僅是ACM,也適用於任何比賽。我就是不願參加那些雜七雜八的比賽,寧可去公司實習。

但是反過來可以,你的目標是打比賽,手段是學習東西。實際上你以後會碰到很多「任務驅動」的學習,為了一個任務或者目標而學習未知的東西,在這個世界是常態,因為沒有什麼東西是你已經準備好並且恰好能用到的。

想清楚你的真實目的到底是哪個。


個人覺得兩者之間並沒有很強的聯繫,演算法只是acm競賽的載體、鍛煉的是人的代碼能力,邏輯思維,細心,耐心,毅力以及團隊合作能力,而演算法僅僅是體現在外的一項收穫而已。

從我個人的角度而言,acm讓我知道,這麼難的演算法都能學會,還有啥學不會?

從認識的碼農的角度考慮的話,大多acmer寫代碼的時候會考慮:怎麼寫性能佳,bug少,易修改,可讀性好,而不是考慮:怎麼才能實現它


ACM的主要作用是開腦洞,提智商。開腦洞就是鍛煉邏輯思考,抽象建模,運用知識的能力。提智商就是鍛煉學習知識,理解複雜模型的能力。

通常意義上的演算法學習中心在於理解,ACM的重心在於化歸,理解只是第一步。同樣一個演算法在高手手裡是屠龍劍,在新手手裡是水果刀。


我覺得搞acm的理由只有兩個

第一是興趣 是我喜歡演算法競賽 我喜歡這種A題的感覺

第二是情懷 是我高中沒能做出什麼成就 或者是我已經迷上了演算法競賽

除此之外,我覺得單純為學習演算法或者功利性的去參加acm都是做不長的


如果能分得清自己是學了還是學會了的話,那怎麼學都無所謂。但內心這麼強大的人終歸只是少數,參加ACM至少能強迫自己實現一遍所學的演算法。


學習演算法,不必參加acm。


瀉藥啊(?≧?≦?)

我覺得這是個觀念逐漸提升的過程

剛開始我是為了ACM而去學演算法,後來覺得演算法很有趣,而ACM的題目涉及很多演算法,所以就變成了為了學演算法學得更透徹去做ACM的題目。。。

那麼到底該如何學演算法,當然是看書刷題加討論咯!沒有比這個方法更實在的了!


因為感覺可以證明自己的智商而參加acm,結果證明了自己的智商確實低。跟演算法基本沒啥關係。


推薦閱讀:

關於生成隨機浮點數的面試題?
如何建立一個新的ACM隊(我們學校以前沒人做過)?
C 語言打開一個文件時,緩衝區在內存的什麼位置?
為何公鑰私鑰不可互相推導?
一個優秀的程序員應該學完哪些計算機理論的知識?

TAG:演算法 | ACM競賽 |