今天总结了一些关于枚举法的基础概念
在生活中,如果我们使用枚举法去解决生活问题,或许太过于笨拙
但是在计算机/程序界,我们可以使用计算机高速运算的特点,使用枚举法解决问题。
那么枚举法到底是个啥???
枚举法
也可以理解为穷举法,就是依据题目所给出的条件确定了大体的范围,然后对此范围内所有可能的情况逐一的验证,直到验证完毕得出答案。
枚举法在我看来就四个字:简单粗暴!!!
为什么说他简单:循环使用for和if,直到得到自己的答案。
为什么说他粗暴:对范围内的所有情况逐一的验证,必然会想到运算量大,即使计算机的运行速度再快也扛不住枚举的运算量,一个for不行,就再嵌套一个for,一个不行就两个。。。。太残暴了!!不学了。。。。
打住!!!打住!!!
到这里或许你对于枚举有了一丁点的了解。
或许,你还可能认为枚举好糟糕。。。
可是这么简单的算法弃之可惜。。。。唉!
于是,,,,我们便会考虑到:如何优化枚举算法呢?
枚举法时间复杂度的公式为:枚举算法的时间复杂度 = 状态总数*考察单个状态的耗时
看不懂?举个例子:吃一个冰棒需要3分钟吃10根呢?
明显,通过这个公式,我们可以分三种方法:
1.排除明显不属于可能答案范围的元素
2.减少状态总数(即减少枚举变量和枚举变量的值域)
3.降低单个状态的考察代价
使用枚举法时,要恰当的选定所得答案的范围,最好知道哪些变量可以作为主线,对可能的情况不能遗漏,也不能重复。对于循环和判断方法要用的恰如其分,便可达到最优
(可以看看我的百钱买鸡https://blog.youkuaiyun.com/qq_38973721/article/details/79712504)。
有的时候效率很重要,但是过于追求效率,会产生读不懂代码的尴尬局面,尤其是搞开发,读不懂代码多尴尬。。。所以枚举有事很重要的。。。嘻嘻。。
本文介绍了枚举法的基本概念,探讨了其在计算机科学中的应用,并提供了优化枚举算法的方法。
1330

被折叠的 条评论
为什么被折叠?



