欢迎光临散文网 会员登陆 & 注册

-

2021-08-29 22:14 作者:スレーブ_スレイヤー  | 我要投稿

我是弱智。Leetcode一道中级题目我过了十天依旧没有做出来。缺少一些前置知识,比如DP,回溯等等,这是一方面;另一方面,我可能真的是没什么天赋。

高中有一次数学考试,我错了一道三角函数的题目。然后老师讲了这道题,我也听懂了,但是我觉得下次再遇到新的题目还是会错,即使课本上的知识我确实都掌握了,但怎么用这些知识从正确的路径走到答案,我觉得这一点是需要一些直觉,或者说天赋的。

然后某个同学,是个肥仔,暂时命名为肥仔吧。我说这道题好难,肥仔说这道题好简单,然后把老师的步骤一字不差的复读了一遍。

这种马后炮的想法很容易误导人,已经知道了答案再去看问题自然会变得简单,这是理所当然的事。真正难的地方在于,只有问题的时候怎么找到答案,是扩大知识量让自己的“武器库”变得更丰富,还是刷更多的题用记忆来解决。我感觉没有靠谱的方案,不然高考人人都能750分了,最后的最后还是得拼智商和天赋。

好,说了这么多,就是想让自己不去看题解。虽然现在看题解马上就能有一种恍然大悟的感觉,得到正反馈,得到新的“武器”,但这些东西什么时候去获取都行,重要的是思考出正确答案的能力。

题目很简单,用1到n之间的数字来组成数组,算出满足特定条件的数组的数量。n<=15。

因为N很小,时间复杂度根本没去想,更别提超时,所以直接用了字典序把所有可能的排列都枚举了一遍。用自己的机器跑了一遍才发现,n=11还能控制在一秒以内,n=12的时候直接14秒,等于15的情况下近乎不可解。

大概,可能,时间复杂度是喜闻乐见的O(N^N)。于是我很想去看题解,回溯,DP,状态压缩......这些全新词汇真的很诱惑人,看了题解马上就能用这些东西得到一个高效的方案,而且对于新的题目也一定用得上。但是,我还是想用字典序做出来,毕竟这个方案才是在不知道答案的情况下,自己想到的方法。

经过优化,n=12的情况已经“只”需要700ms就可以算出来,但是13还是超过了一秒。

我想过排除一些无意义的组合,比如判断到第二位不满足条件的时候,直接让第二位+1,可以省去很多次循环。然而效率还是太低了。主要字典序算法很不直观,以我的智商很难在不破坏字典序算法原有规则的情况下,最大程度省掉无意义的排列。

N=13已经差不多了,但是N=14还是会循环9亿多次,还是在已经做了很多优化的情况下。

总之,能证明自己是弱智真是太好了。懒得探讨天赋和努力之类的问题,但我确实见过天才:高中的时候老师让我们做算法题,有打印菱形这类简单的题,也有一些意义不明的题目。其中有一道很麻烦的题,全班没人做出来,我的计算机水平在班上算高的了,但我只觉得头疼(物理)。然后有个同学做了出来,而且这人根本没怎么听过课,我看了他的代码,没有什么高深莫测的东西,非常质朴的只有if else for 的C语言代码,但我一行都没看懂。

他讲了自己的思路,我还是没听懂。他关掉VC6.0,登录了Steam开始打CSGO,我在电脑前怀疑人生。数学考试那次也是,那道题他做对了,我问他当时怎么想的,他说是运气,正好想到了。不太可能是巧合,或者在背后努力之类的情况。只能是天赋了,所谓的天赋大概就是一种直觉,一种在面对问题时可以找到正确答案的直觉。

可惜我没有这种直觉,所以完全无从下手,不得不依靠知识来解题。

但在别的地方我有过类似的直觉,是在打格斗游戏的时候,通过直觉预判对手的行动,可能是段位过低的缘故,我自己都感觉像是能够读心一样准。

是一种很奇妙的感觉,虽然没有任何东西可以证明对手下一步会凹升龙,但就是有一种迷之自信觉得它起身一定会出升龙,偏偏每次还都猜中了。

做题的时候就感觉很难受,没有那种迷之自信,只觉得不知道从哪里开始思考,应该怎么思考......虽然是因为知识量不够,但真的有天赋的话,即使没有知识应该也是能凭直觉想出答案的。

嘛......最后再试试看,依靠直觉能不能把这道题解出来。



-的评论 (共 条)

分享到微博请遵守国家法律