博客
关于我
递推算法——例题详解
阅读量:788 次
发布时间:2019-03-24

本文共 1445 字,大约阅读时间需要 4 分钟。

递推算法的本质

递推算法的本质是通过将复杂问题分解为多个较小的问题并建立彼此之间的数字关系,将问题一步步简化求解。在递推过程中,我们通过已知部分问题的结果,逐步推导出未知部分的问题解,类似于从下而上解决问题的方式,使得问题变得更加清晰和可控。

例一:数塔问题(倒推法)

数塔问题是递推算法的经典例子。问题描述为:在一个由数字构成的数塔中,从顶部到底部找出一条路径,使得路径上的数字之和最大。解决这个问题的常用方法是倒推法,即从上层向下层推导。

分析:将问题从上而下分解显然并不直观,因此我们选择从下而上进行分析。通过观察我们可以发现,每一层的数字之和等于下一层中与其相邻的两个数字中较大的那个加上当前层的数字。

最终,从最底层到最顶层,我们逐步计算每层的值,从而得到最大和路径。

代码实现:

#include 
#include
#include
#include
using namespace std;int main() { int n, i, j; char a[101][101]; cin >> n; for (i = 1; i <= n; ++i) { for (j = 1; j <= i; ++j) { cin >> a[i][j]; } } for (i = n - 1; i >= 1; --i) { for (j = 1; j <= i; ++j) { if (a[i + 1][j] >= a[i + 1][j + 1]) { a[i][j] += a[i + 1][j]; } else { a[i][j] += a[i + 1][j + 1]; } } } cout << a[1][1] << endl; return 0;}

例二:斐波那契数列的非递归实现

斐波那契数列是一个经典的递推序列,其定义为:f(0)=1,f(1)=1,f(n)=f(n-1)+f(n-2)。通过递推式,我们可以逐步计算出后续的数列项。

分析:观察数列的结构,我们可以发现每一项都等于前两项之和。通过非递归的方式,我们可以通过循环实现,将前一项和前前一项的值相加,逐步生成数列。

代码实现:

#include 
#include
#include
#include
using namespace std;int main() { int f0 = 1, f1 = 1, f2 = 2; int n; cin >> n; for (int i = 3; i <= n; ++i) { f2 = f0 + f1; f0 = f1; f1 = f2; } cout << f2; return 0;}

其他相关类型的问题

类似的递推类型问题还包括经典的蓝桥杯题目“奶牛问题”等,其中涉及递归和非递归的不同实现方法。

转载地址:http://phrkk.baihongyu.com/

你可能感兴趣的文章
NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_01---大数据之Nifi工作笔记0033
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南002---大数据之Nifi工作笔记0069
查看>>
NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
查看>>
NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
查看>>
NIH发布包含10600张CT图像数据库 为AI算法测试铺路
查看>>
Nim教程【十二】
查看>>
Nim游戏
查看>>
NIO ByteBuffer实现原理
查看>>
Nio ByteBuffer组件读写指针切换原理与常用方法
查看>>
NIO Selector实现原理
查看>>
nio 中channel和buffer的基本使用
查看>>
NIO三大组件基础知识
查看>>
NIO与零拷贝和AIO
查看>>
NIO同步网络编程
查看>>