做者:覃超連接:https://www.zhihu.com/question/30501748/answer/48551717來源:知乎著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。能夠,並且我也有背誦。面試
從中學時候學的全排列和各類排序算法還有高精度運算,我嘗試過理解去寫,可是臨考競賽前,我都是死記硬背。(實話實說)把這些算法的代碼骨架在紙上默寫了好多遍,而後去Online Judge上去作幾個使用到此類算法的題目。我可能算天賦比較差的,我見過旁邊的確有一些牛人好像是看了幾眼就能領悟而後熟記於心的。在ACM-ICPC上,咱們隊總結出來常考的一些算法類型,把他們分工好,就各自去狂背。有些實在太複雜背不下來的(好比網絡流),打印出來厚厚一疊A4紙帶入比賽場。當時還和集訓隊裏的人戲稱:想要比賽好,先要帶的多!-_- 在到留學時,CMU算法期末考試還有Facebook的面試,我都有大量的背誦和重複性的習題練習在裏面。算法
更加劇要的是得到比較好的記憶效果:每一個人可能不同。我我的是在紙上寫比較容易記住,不論是流程,計劃甚至是程序。因此一些重要的東西,我不在電腦上打而是寫在紙上。另外最近看到Elon Musk的建議,我以爲很不錯(我以前重點學習他,是由於他做爲一個創業者,在Paypal,電動汽車,軌道交通,太陽能光伏,火箭,太空移民方面都有涉獵,很可怕的一個全能手。) 他在Ask Me Anything上面有建議:
One bit of advice: it is important to view knowledge as sort of a semantic tree -- make sure you understand the fundamental principles, ie the trunk and big branches, before you get into the leaves/details or there is nothing for them to hang on to."
知識的體系結構相似一棵樹, 若是你想要學得快記得牢固, 就必須把主幹和粗線條先學習紮實, 由於後來的高級知識相似樹葉, 須要有主幹的支持才能掛靠牢固.
關於Elon在Ask me anything的詳細內容能夠看: Elon Musk的你問我答 - QC帝國興亡史-FB,扎克伯格,創業 - 知乎專欄
當年搞OI時有幾個不容易理解的算法,擴展歐幾里得展轉相除, kmp,二分圖匹配的Hopcroft-Karp...我都是硬背的。
可是每次題目考到相應的東西都作不出來,一是記性太差,二是壓根看不出來考的是這個算法。網絡後來發現最有效的方法是推導,
固然,數據結構和網絡流之類的仍是背吧,實現細節差一點效率差太多了,我能夠在紙上默寫dinic。
」字符串匹配問題「 -> "n^2暴力枚舉" -> "重複枚舉的部分能夠優化" -> "用pre[x]記錄前綴x的最長可重用後綴" -> "推出pre的計算方法" -> "實現代碼」 (基本就是當年Knuth的心路歷程)
只有實現了這個從問題到算法到代碼的過程纔算記住了。數據結構
做者:莫濤連接:https://www.zhihu.com/question/30501748/answer/48415644來源:知乎著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
做者:牛肉豆腐乾連接:https://www.zhihu.com/question/30501748/answer/48375881來源:知乎著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。謝邀:
-----------------詳細分析---------------
結論寫在前面:沒入門的話,能夠看基礎的書,其中的重要算法多看幾遍並按本身的理解寫出來,並調試。入了門以後,就去作作題目,寫寫代碼,想一想數學原理就能夠了。用到的時候再看看書。學習
就比如,英文單詞,congratulation這種詞,有些人(英語教育不好的地區)就會用c o n g r a t u l a t i o n這種形式去背,效果不好,其實正確的背誦方法是按音節去背。。。更加高級的招式是按詞根去背,更加牛的招式是去美國,用多了,天然就能拼寫出來了。。。
1.若是一堆代碼給你,你按純文本的方式去背的話,會很累,很容易錯,並且沒有和含義聯繫在一塊兒。若是你明白每一塊的意思,那麼,就能夠記住幾塊意思,而後,用到的時候臨時「拼寫」出來。僞代碼乾的就是這個事,作了一個抽象,輔助記憶。。。
2.能夠對應單詞的詞根記憶法,就是說分類,好比排序類的算法,一大片的記憶,通常的算法書也大抵是這麼個結構,相關類型的算法放在一塊兒。
3.用多了或者創造過,嘗試本身去解決問題,而後經歷探索以後記住了。好比有一個算法問題,而後你去嘗試解決,你一開始沒有思路,但經過本身就解決了,那麼你極可能摸索出了和答案同樣的算法(至關於你把當年算法發現者的步驟走了一遍,固然不排除你發現了一個新的,機率很低),若是你解決不掉,但經過查閱資料解決了,也會加深印象的。若是這個問題你一開始就有思路,而且很熟練了,寫不寫就看心情和時間了。
因此沒入門的時候:能夠按1,2的方式,讀一本入門書,按類別記憶並拼寫調試幾個基礎算法。。入了門就用3的方式。以上內容均轉載自知乎: https://www.zhihu.com/question/30501748