TODO:算法的初步理解之枚举算法
算法是软件的精髓。
反观计算机行业出身的人员,对于软件开发更多局限于与数据库的交互,即增、删、改、查。在做数据库交互主要用的算法是枚举算法。枚举算法的思想是,将问题的所有可能的答案一一列举,然后根据条件判断此答案是否合适,保留合适的,丢弃不合适的。如图枚举算法流程:
经典的枚举算法有“百钱买百鸡”,公鸡每只5元,母鸡每只3元,小鸡3只1元,用100元可以买100只鸡,问公鸡,母鸡,小鸡各多少只?这就是已知部分答案,求解未知问题。下面小O用Golang来简单实现,详细看源码注释。
输出的结果:
其中的趣味慢慢品尝吧。有兴趣的朋友可以把x,y,z的值改为0,会有意想不到的结果。这是golang语言的特性,值得注意,以免入坑。会算出这样的结果哈
枚举算法是编程中最常见的,在已知的答案范围内不断的去判断符合的条件,并输出结果。简单粗暴,有些破解软件就是使用这样的算法,进行暴力破解,不断尝试,最终获得答案。缺点就是运算量比较大,解题效率不高,在不超过200万次的枚举范围可以尝试使用枚举算法。
最近看到很多公司都在招聘算法工程师,有视觉算法,搜索算法,推荐算法,地理编码匹配算法等。随着科技的不断进步,算法的作用不断走进我们的现实中,而不是在科研中了。
wxgzh:ludong86