-
我是弱智。Leetcode一道中級(jí)題目我過(guò)了十天依舊沒(méi)有做出來(lái)。缺少一些前置知識(shí),比如DP,回溯等等,這是一方面;另一方面,我可能真的是沒(méi)什么天賦。
高中有一次數(shù)學(xué)考試,我錯(cuò)了一道三角函數(shù)的題目。然后老師講了這道題,我也聽(tīng)懂了,但是我覺(jué)得下次再遇到新的題目還是會(huì)錯(cuò),即使課本上的知識(shí)我確實(shí)都掌握了,但怎么用這些知識(shí)從正確的路徑走到答案,我覺(jué)得這一點(diǎn)是需要一些直覺(jué),或者說(shuō)天賦的。
然后某個(gè)同學(xué),是個(gè)肥仔,暫時(shí)命名為肥仔吧。我說(shuō)這道題好難,肥仔說(shuō)這道題好簡(jiǎn)單,然后把老師的步驟一字不差的復(fù)讀了一遍。
這種馬后炮的想法很容易誤導(dǎo)人,已經(jīng)知道了答案再去看問(wèn)題自然會(huì)變得簡(jiǎn)單,這是理所當(dāng)然的事。真正難的地方在于,只有問(wèn)題的時(shí)候怎么找到答案,是擴(kuò)大知識(shí)量讓自己的“武器庫(kù)”變得更豐富,還是刷更多的題用記憶來(lái)解決。我感覺(jué)沒(méi)有靠譜的方案,不然高考人人都能750分了,最后的最后還是得拼智商和天賦。
好,說(shuō)了這么多,就是想讓自己不去看題解。雖然現(xiàn)在看題解馬上就能有一種恍然大悟的感覺(jué),得到正反饋,得到新的“武器”,但這些東西什么時(shí)候去獲取都行,重要的是思考出正確答案的能力。

題目很簡(jiǎn)單,用1到n之間的數(shù)字來(lái)組成數(shù)組,算出滿足特定條件的數(shù)組的數(shù)量。n<=15。
因?yàn)镹很小,時(shí)間復(fù)雜度根本沒(méi)去想,更別提超時(shí),所以直接用了字典序把所有可能的排列都枚舉了一遍。用自己的機(jī)器跑了一遍才發(fā)現(xiàn),n=11還能控制在一秒以內(nèi),n=12的時(shí)候直接14秒,等于15的情況下近乎不可解。
大概,可能,時(shí)間復(fù)雜度是喜聞樂(lè)見(jiàn)的O(N^N)。于是我很想去看題解,回溯,DP,狀態(tài)壓縮......這些全新詞匯真的很誘惑人,看了題解馬上就能用這些東西得到一個(gè)高效的方案,而且對(duì)于新的題目也一定用得上。但是,我還是想用字典序做出來(lái),畢竟這個(gè)方案才是在不知道答案的情況下,自己想到的方法。

經(jīng)過(guò)優(yōu)化,n=12的情況已經(jīng)“只”需要700ms就可以算出來(lái),但是13還是超過(guò)了一秒。
我想過(guò)排除一些無(wú)意義的組合,比如判斷到第二位不滿足條件的時(shí)候,直接讓第二位+1,可以省去很多次循環(huán)。然而效率還是太低了。主要字典序算法很不直觀,以我的智商很難在不破壞字典序算法原有規(guī)則的情況下,最大程度省掉無(wú)意義的排列。
N=13已經(jīng)差不多了,但是N=14還是會(huì)循環(huán)9億多次,還是在已經(jīng)做了很多優(yōu)化的情況下。
總之,能證明自己是弱智真是太好了。懶得探討天賦和努力之類(lèi)的問(wèn)題,但我確實(shí)見(jiàn)過(guò)天才:高中的時(shí)候老師讓我們做算法題,有打印菱形這類(lèi)簡(jiǎn)單的題,也有一些意義不明的題目。其中有一道很麻煩的題,全班沒(méi)人做出來(lái),我的計(jì)算機(jī)水平在班上算高的了,但我只覺(jué)得頭疼(物理)。然后有個(gè)同學(xué)做了出來(lái),而且這人根本沒(méi)怎么聽(tīng)過(guò)課,我看了他的代碼,沒(méi)有什么高深莫測(cè)的東西,非常質(zhì)樸的只有if else for 的C語(yǔ)言代碼,但我一行都沒(méi)看懂。
他講了自己的思路,我還是沒(méi)聽(tīng)懂。他關(guān)掉VC6.0,登錄了Steam開(kāi)始打CSGO,我在電腦前懷疑人生。數(shù)學(xué)考試那次也是,那道題他做對(duì)了,我問(wèn)他當(dāng)時(shí)怎么想的,他說(shuō)是運(yùn)氣,正好想到了。不太可能是巧合,或者在背后努力之類(lèi)的情況。只能是天賦了,所謂的天賦大概就是一種直覺(jué),一種在面對(duì)問(wèn)題時(shí)可以找到正確答案的直覺(jué)。
可惜我沒(méi)有這種直覺(jué),所以完全無(wú)從下手,不得不依靠知識(shí)來(lái)解題。
但在別的地方我有過(guò)類(lèi)似的直覺(jué),是在打格斗游戲的時(shí)候,通過(guò)直覺(jué)預(yù)判對(duì)手的行動(dòng),可能是段位過(guò)低的緣故,我自己都感覺(jué)像是能夠讀心一樣準(zhǔn)。
是一種很奇妙的感覺(jué),雖然沒(méi)有任何東西可以證明對(duì)手下一步會(huì)凹升龍,但就是有一種迷之自信覺(jué)得它起身一定會(huì)出升龍,偏偏每次還都猜中了。
做題的時(shí)候就感覺(jué)很難受,沒(méi)有那種迷之自信,只覺(jué)得不知道從哪里開(kāi)始思考,應(yīng)該怎么思考......雖然是因?yàn)橹R(shí)量不夠,但真的有天賦的話,即使沒(méi)有知識(shí)應(yīng)該也是能憑直覺(jué)想出答案的。
嘛......最后再試試看,依靠直覺(jué)能不能把這道題解出來(lái)。