算法笔记
executiveforce
IT、金融、投资
展开
-
动态规划算法的基本要素
最优子结构性质和子问题重叠性质是该问题可用动态规划算法求解的基本要素:1.最优子结构 当问题的最优解包含了其子问题的最优解时,称该问题具有最优子结构性质。问题的最优子结构性质提供了该问题可用动态规划算法求解的重要线索。 在动态规划算法中,利用问题的最优子结构性质,以自底向上的方式递归地从子问题的最优解逐步构造出整个问题的最优解。2.重叠子问题翻译 2016-10-08 22:09:05 · 32322 阅读 · 0 评论 -
贪心算法
顾名思义,贪心算法总是做出在当前看来最好的选择。 也就是说,贪心算法并不从整体最优上加以考虑,它所做出的选择只是在某种意义上的局部最优选择。 虽然贪心算法不是对所有问题都能得到整体最优解,但对范围相当广的许多问题它能产生整体最优解,如单源最短路径问题、最小生成树问题。 对于一个具体的问题,怎么知道是否可以用贪心算法来解决此问题,以及能否得到问题的一个翻译 2016-10-08 23:07:31 · 1171 阅读 · 0 评论 -
回溯法
回溯法有“通用的解题法”之称。用它可以系统地搜索一个问题的所有解或任一解。回溯法是一个既带有系统性又带有跳跃性的算法。回溯法以深度优先方式系统搜索问题解,适用于组合数较大的问题。用回溯法解题通常包含以下3个步骤:(1)针对所给问题,定义问题的解空间;(2)确定易于搜索的解空间结构;(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。翻译 2016-10-09 19:20:26 · 307 阅读 · 0 评论 -
算法基本概念
所谓算法,就是解决问题的一种方法或一个过程。具体来讲,算法是由若干指令组成的有穷序列。算法概念并不是计算机学科独有的概念,生活到到处可见算法的应用。算法要满足4条性质:1.输入2.输出3.确定性4.有限性复杂性: 时间复杂度(T)——算法所求解问题规模n的函数 渐进时间复杂度(O)——当问题规模趋向无穷大时,算法时间复杂度的数原创 2016-09-22 10:42:48 · 387 阅读 · 0 评论 -
递归与迭代的区别与联系
递归算法,简而言之就是一种函数调用函数自身来完成算法设计的方法。 迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一指令进行重复执行,在每次执行这组指令时,都从变量的原值推出它的一个新值。Fibonacci数列的递归实现:int Fib(int n){ int fibn; if(n==0) fibn原创 2016-10-15 14:13:37 · 723 阅读 · 0 评论 -
字符串的模式匹配
简单模式匹配算法: 对主串的每一个字符作为子串开头,与要匹配的字符串进行匹配。对主串做大循环,每个字符开头子串长度的小循环,直到匹配成功或全部遍历完成为止。版本一:/* * 简单模式匹配算法 * 输入主串和子串,在主串中匹配子串所在的位置; * 如果主串存在子串,返回所在位置,负责返回-1。 * */public class Main { publi原创 2017-08-18 13:57:08 · 363 阅读 · 0 评论 -
遍历二叉树
定义:二叉树的遍历是指从根结点出发,按照某种次序依次访问二叉树中所有节点,使得每个节点被访问一次且仅被访问一次。二叉树的遍历方式有很多,按照从左到右的习惯方式,主要有四种:1、前序遍历先访问根结点,然后前序访问左子树,再前序遍历右子树。2、中序遍历从根结点开始(注意不是先访问根结点),中序遍历根结点的左子树,然后是访问根结点,最后中序遍历右子树。3、后序遍历从左到右先叶原创 2017-08-21 12:33:26 · 302 阅读 · 0 评论