C/C++
Gary强z
这个作者很懒,什么都没留下…
展开
-
常用算法设计方法(1)——迭代法
一、迭代法 迭代法是用于求方程或方程组近似根的一种常用的算法设计方法。设方程为f(x)=0,用某种数学方法导出等价的形式x=g(x),然后按以下步骤执行: (1) 选一个方程的近似根,赋给变量x0; (2) 将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0; (3) 当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤(2)的计算。 若方程有根,并且用上转载 2006-12-24 03:57:00 · 2466 阅读 · 2 评论 -
常用算法设计方法(3)——递推法
三、递推法 递推法是利用问题本身所具有的一种递推关系求问题解的一种方法。设要求问题规模为N的解,当N=1时,解或为已知,或能非常方便地得到解。能采用递推法构造算法的问题有重要的递推性质,即当得到问题规模为i-1的解后,由问题的递推性质,能从已求得的规模为1,2,…,i-1的一系列解,构造出问题规模为I的解。这样,程序可从i=0或i=1出发,重复地,由已知至i-1规模的解,通过递推,获得规模为转载 2006-12-24 04:00:00 · 1089 阅读 · 0 评论 -
常用算法设计方法(5)——回溯法
五、回溯法 回溯法也称为试探法,该方法首先暂时放弃关于问题规模大小的限制,并将问题的候选解按某种顺序逐一枚举和检验。当发现当前候选解不可能是解时,就选择下一个候选解;倘若当前候选解除了还不满足问题规模要求外,满足所有其他要求时,继续扩大当前候选解的规模,并继续试探。如果当前候选解满足包括问题规模在内的所有要求时,该候选解就是问题的一个解。在回溯法中,放弃当前候选解,寻找下一个候选解的过程称为转载 2006-12-24 04:03:00 · 1005 阅读 · 0 评论 -
常用算法设计方法(8)——动态规划法
八、动态规划法 经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。 为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于该数组中,这就是动态规划法所采用的基本方法。以下先用实例说明动态规划方法的使用。 【问题】 求转载 2006-12-24 04:08:00 · 1596 阅读 · 0 评论 -
常用算法设计方法(9)——习题
习题: 1、汽车加油问题: 设有路程长度为L公里的公路上,分布着m个加油站,它们的位置分别为p[i](i=1,2,……,m),而汽车油箱加满油后(油箱最多可以加油k升),可以行驶n公里。设计一个方案,使汽车经过此公路的加油次数尽量少(汽车出发时是加满油的)。 2、最短路径: 设有一个网络,要求从某个顶点出发到其他顶点的最短路径 3、跳马问题: 在8*8方格的棋盘上,从任意指定的方格出发,为马寻找一转载 2006-12-24 04:10:00 · 1522 阅读 · 0 评论 -
常用算法设计方法(2)——穷举搜索法
二、穷举搜索法 穷举搜索法是对可能是解的众多候选解按某种顺序进行逐一枚举和检验,并从众找出那些符合要求的候选解作为问题的解。 【问题】 将A、B、C、D、E、F这六个变量排成如图所示的三角形,这六个变量分别取[1,6]上的整数,且均不相同。求使三角形三条边上的变量之和相等的全部解。如图就是一个解。 程序引入变量a、b、c、d、e、f,并让它们分别顺序取1至6的证书,在它们互不相同的条转载 2006-12-24 03:59:00 · 1104 阅读 · 0 评论 -
常用算法设计方法(4)——递归
四、递归 递归是设计和描述算法的一种有力的工具,由于它在复杂算法的描述中被经常采用,为此在进一步介绍其他算法设计方法之前先讨论它。 能采用递归描述的算法通常有这样的特征:为求解规模为N的问题,设法将它分解成规模较小的问题,然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更小的问题,并从这些更小问题的解构造出规模较大问题的解。特别转载 2006-12-24 04:02:00 · 1242 阅读 · 0 评论 -
常用算法设计方法(6)——贪婪法
六、贪婪法 贪婪法是一种不追求最优解,只希望得到较为满意解的方法。贪婪法一般可以快速得到满意的解,因为它省去了为找最优解要穷尽所有可能而必须耗费的大量时间。贪婪法常以当前情况为基础作最优选择,而不考虑各种可能的整体情况,所以贪婪法不要回溯。 例如平时购物找钱时,为使找回的零钱的硬币数最少,不考虑找零钱的所有各种发表方案,而是从最大面值的币种开始,按递减的顺序考虑各币种,先尽量用大面值的转载 2006-12-24 04:05:00 · 1283 阅读 · 0 评论 -
常用算法设计方法(7)——分治法
七、分治法 1、分治法的基本思想 任何一个可以用计算机求解的问题所需的计算时间都与其规模N有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。例如,对于n个元素的排序问题,当n=1时,不需任何计算;n=2时,只要作一次比较即可排好序;n=3时只要作3次比较即可,…。而当n较大时,问题就不那么容易处理了。要想直接解决一个规模较大的问题,有时是相当困难的。 分治法的设计思想是,将一个难以直转载 2006-12-24 04:06:00 · 2450 阅读 · 0 评论