TC官方合作论坛

 找回密码
 立即注册
查看: 3010|回复: 17

[其他] [教程] 【算法教程】递推算法(有图有真相)!!!

  [复制链接]
发表于 2013-12-9 14:43:56 | 显示全部楼层 |阅读模式
本帖最后由 阿三 于 2013-12-9 15:49 编辑

“程序=算法+数据结构”,是众人皆知的道理。但是在我们实际的学习中,我们可能会忽视算法的分析与讲解。更可能有些人不知道什么是算法。久而久之,势必造成死板地学习一个个语法格式,结果语句是懂了,但面对具体问题时,还是不知从何下手。因为我对于算法也算略有了解,所以我就结合自己地理解再根据一些具体的题目的讲解,希望大家也能认识到算法的重要性,能够理解并掌握一些算法,说不定对于程序的编写会有所帮助。 

递推
递推法是一种重要的数学方法。这种算法的特点是:一个问题的求解需要一系列的计算,在已知条件和所求问题之间总存在着某种相互联系的关系。在计算时,如果可以找到前后过程之间的数量关系(即递推式)。那么顺推还是逆推,其关键是找到递推式。这种处理问题的方法能使复杂运算转化为若干步重负的简单运算,充分发挥计算机擅长于重复处理的特点。
我们来看一道题:数字三角形。请编一个程序计算从顶到底的一条路径,使该路径所经过的数字总和最大,输出数字总和的最值。每一步可沿斜线向左下或右下走

该数字三角形可转化为上。这样每一步就相当于沿向下或向右下行走。我们可以采用倒推的手段,设数字(i,j)
存放从i,j出发到达n层的最大值。具体算法过程是:因为每一步都可以沿向下或向右下行走。
于是当我们走到倒数第2层的时候(在这道题上是第4层,即i=4)。我们该考虑最后一层该如何走。请看图

种颜色就代表每一种路径的所有选择。所以。在每一种路径中,我们都找出当前最大的一条路继续走


解为30。这只是其中的一种解法,其他解法在介绍别的算法的时。我们用i和j表示行和列,利用数学关系计算。用tc代码表示为:
游客,如果您要查看本帖隐藏内容请回复

再得出递推式:
游客,如果您要查看本帖隐藏内容请回复

翻译一下就是比较下一层的下方的一个数和右下方的一个数。谁

大就把谁加到上一层上。用这种倒循环和正循环配合,正好能完

美得配合上这道题的结构。

再来看一个题
楼梯有n级台阶,上楼可以一步上一个台阶,也可以一步上两个台

阶。编写一个程序计算共有多少种不同的走法。我们设一个数组f

存放走法。一开始看这个题可能没有头绪,不急,我们很容易地

可以知道当n=1,f[1]=1。n=2,f[2]=2。现在我们来看有3级台阶

的时候。我们分2种情况。
第一种,如果第一步走一层,那么还剩下3-1级台阶,这时候就是

n=2的时候的走法。
第二种,如果第一步走两层,那么还剩下3-2级台阶,这时候就是

n=1的时候的走法。
所以我们得出。f[n]=f[n-1]+f[n-2]。
这个递推式就是著名的斐波那契数,在很多问题上都可正解。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

发表于 2013-12-9 15:03:45 | 显示全部楼层
一点一点学习
回复 支持 反对

使用道具 举报

发表于 2013-12-9 15:06:59 | 显示全部楼层
收藏 学习
回复

使用道具 举报

发表于 2013-12-9 21:55:33 | 显示全部楼层
看看~~
回复

使用道具 举报

发表于 2014-1-9 01:03:28 | 显示全部楼层
看看
回复

使用道具 举报

发表于 2014-1-16 15:54:16 | 显示全部楼层
递推算法
回复

使用道具 举报

发表于 2014-1-19 12:34:57 | 显示全部楼层
学学
回复

使用道具 举报

发表于 2014-2-1 00:34:52 | 显示全部楼层

收藏 学习
回复

使用道具 举报

发表于 2014-3-7 13:32:25 | 显示全部楼层
恢复看看啊
回复 支持 反对

使用道具 举报

发表于 2014-3-22 19:45:00 | 显示全部楼层
了解一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-17 18:38 , Processed in 0.046021 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表