
算法设计
文章平均质量分 78
sharpdew
这个作者很懒,什么都没留下…
展开
-
动态规划算法剖析
最优化原理 1951年美国数学家R.Bellman等人,根据一类多阶段问题的特点,把多阶段决策问题变换为一系列互相联系的单阶段问题,然后逐个加以解决。一些静态模型,只要人为地引进“时间”因素,分成时段,就可以转化成多阶段的动态模型,用动态规划方法去处理。与此同时,他提出了解决这类问题的“最优化原理”(Principle of optimality): “一个过程的最优决策具有这样的性质:原创 2006-05-30 13:07:00 · 42912 阅读 · 11 评论 -
排列组合问题的通用算法
尽管排列组合是生活中经常遇到的问题,可在程序设计时,不深入思考或者经验不足都让人无从下手。由于排列组合问题总是先取组合再排列,并且单纯的排列问题相对简单,所以本文仅对组合问题的实现进行详细讨论。以在n个数中选取m(01. 首先从n个数中选取编号最大的数,然后在剩下的n-1个数里面选取m-1个数,直到从n-(m-1)个数中选取1个数为止。2. 从n个数中选取编号次小的一个数,继续执行1步,直原创 2006-05-25 17:26:00 · 66260 阅读 · 12 评论 -
递归程序求解问题的通用法则
编写递归程序有几个重要的原则可以遵循: 1. 要解决的问题可拆分为几个与原问题类似的子问题(子问题仍可拆分)。 2. 每个子问题必须比原来问题的规模更小(即使小一号也行,当然如果能够迅速减小规模更好)。 3. 遇到足够小的子问题时就直接解决之,防止问题无限细分下去,也就是防止无限递归(递归终止条件很重要)。 先看一个最简单的递归程序,下面程序求整数n的阶乘:int factori原创 2006-11-20 12:37:00 · 6328 阅读 · 0 评论