我是初学者C++程序员,为了扩展我的想法,我一直在尝试projecteuler.net上的一些问题.尽管学校对数学很感兴趣,但我发现自己会自动选择蛮力解决问题的方法,而不是寻找精简或优雅的东西.
这听起来像是一种糟糕的心态吗?我觉得这样做有点内疚,但也许有些快速和肮脏可以......
我认为你应该看看你的最终目标是什么以及你的约束是什么.
有时,暴力方法可以在50ms内解决问题,尝试解决方案的每个组合,而"聪明"的解决方案可以在10ms内解决问题.那时,不那么聪明但更容易理解的解决方案胜过聪明的解决方案.
然而,有一些问题,暴力强迫不仅不优雅,而且根本不起作用.有很多问题,如果你试图天真地强迫它们,它将花费大量的时间来解决它们.显然,这些类型的问题需要更优雅的方法.
那么问问自己,为什么要尝试这些Project Euler问题呢?你在学习吗?然后尝试一个聪明的解决方案将符合您的最佳利益,但只有在您最初尝试使用暴力解决方案以帮助掌握问题之后.
在进行Python挑战问题时,我尝试以最简洁的方式做到这一点,推动我的能力极限.在我解决之后,我会回顾其他人的答案,并记下那些比我更聪明,他们做了什么的人的心理记录.有些人会特别使用我没想过的更适合任务的数据结构,或者他们将使用很少的数学技巧来提高算法的效率.最后,我尝试尽可能多地吸收他们的聪明才智,并在下次我遇到类似性质的问题时展示它.
不,这不是一件坏事.我有一些优雅的解决方案,他们错了.
作为一名初学程序员,您将花费更多的精力来确定如何使用C++实际实现内容,而不是花费精力为每个问题找到一个聪明的解决方案.这很好,因为它让你有机会在处理各种各样的问题时探索C++的不同领域.
当你成为精通C++,你不必去想如何做的每一件小事,那么你就可以花更多的时间发明了非强力解决方案.
优雅的解决方案不是自发创造的; 当当前解决方案需要更高速度或更少内存消耗时,它们来自蛮力解决方案.
所以不,不是.这就是优雅解决方案的产生方式.