算法思想:枚举与剪枝
来源:互联网 发布:淘宝开店虚拟产品 编辑:程序博客网 时间:2024/06/10 07:58
在东北话中有一句:“小树不修不直溜,人不修理哏啾啾”。树要剪枝,才能更好的茁壮成长,程序也一样,在逻辑比较复杂的情况下,需要多层嵌套来完成业务逻辑,如果遍历数量比较大的话,计算机的运算速度会慢下来。下面来看这样的一种需求,假如杨云要做生意,但是它不会数学(她的数学有多烂,看为她而战),不知道怎么找零钱,需要我们写个程序来帮她计算,比如说8元,可以分为5元、2元、1元、5角。有多少种找零方案呢?
上面这种算法是最基础也是最容易想到的算法,这个程序如果按照正确性的考虑来说,这么写完全没有问题,但是我们学习数据结构,一个程序首先要考虑他的时间复杂度和空间复杂度,这里套了四层循环,时间复杂度是非常高的,现在数值不太大,如果数值很大的情况下计算机也吃不消。
其实我们细细想来,这段代码有些情况我们是不需要考虑的,需要把多余的,不符合条件的事先去除掉,这样能提高程序的运行速度。
我们把代码改成这样后,运行发现,出现了负数,我们就应该想到,这段代码还是可以剪枝的,因为有了一些不应该出现的数据,所以我们继续优化代码:
经过上面的剪枝,把多余的情况排除后,运行效率会提高不少,特别数越大,就越明显。其实写到这里,我们所要说的主题已经说完了,大家明白这个意思就好,如果想写的更好,可以把那些定义成变量,方便修改,这也是最基本的,这里就说一嘴就完,这次说的枚举与剪枝的思想,希望大家在工作能好好应用。
上面这种算法是最基础也是最容易想到的算法,这个程序如果按照正确性的考虑来说,这么写完全没有问题,但是我们学习数据结构,一个程序首先要考虑他的时间复杂度和空间复杂度,这里套了四层循环,时间复杂度是非常高的,现在数值不太大,如果数值很大的情况下计算机也吃不消。
其实我们细细想来,这段代码有些情况我们是不需要考虑的,需要把多余的,不符合条件的事先去除掉,这样能提高程序的运行速度。
我们把代码改成这样后,运行发现,出现了负数,我们就应该想到,这段代码还是可以剪枝的,因为有了一些不应该出现的数据,所以我们继续优化代码:
经过上面的剪枝,把多余的情况排除后,运行效率会提高不少,特别数越大,就越明显。其实写到这里,我们所要说的主题已经说完了,大家明白这个意思就好,如果想写的更好,可以把那些定义成变量,方便修改,这也是最基本的,这里就说一嘴就完,这次说的枚举与剪枝的思想,希望大家在工作能好好应用。
0 0
- 算法思想:枚举与剪枝
- 编程算法基础-枚举与剪枝
- 枚举与剪枝算法学习笔记
- 算法基础-枚举与剪枝_观察算式
- 算法基础——1.2枚举与剪枝
- 算法之枚举思想
- 决策树算法与剪枝处理
- 八大算法思想(一)------------------枚举算法
- 算法基础——1.2枚举与剪枝(找零钱、n位数平方的尾数还是自己)
- 算法的领悟(上):枚举思想
- EM算法与思想
- 算法思想与数据结构
- 算法与思想结合
- EM算法与思想
- 第01讲-枚举与剪枝_观察算式
- 决策树之剪枝原理与CART算法
- 决策树算法与不同的剪枝方法
- poj1018 枚举+剪枝
- 搭建开发板nfs文件系统
- JavaScript基础1:JavaScript 错误 - Throw、Try 和 Catch
- 辛弃疾 《青玉案》
- android--UI介绍(未更新完)
- Codeforces Round #313 (Div. 2) C. Gerald's Hexagon 几何
- 算法思想:枚举与剪枝
- Core Animations一些常用常忘的吧
- 135 、137、139端口等主要用途
- Linux下Patch的应用和制作方法
- C# 过滤html标签,保留要指定标签的做法
- [ISA]部署ISA防火墙策略的十六条守则
- c语言 求两个整数的最大公约数
- UIimageView 动画
- Docker 101:介绍与入门体验