动态规划——递推(含例题)

本文介绍了动态规划的基本思想,通过分解问题并利用子问题的最优解求解原问题。文章详细讨论了递推方法,包括顺推法和逆推法,并通过斐波那契数列、汉诺塔问题和平面分割问题等实例阐述了递推关系的建立与应用。
摘要由CSDN通过智能技术生成

一、什么是动态规划?
动态规划是一种用来解决一类最优化问题的算法思想。简单来说,动态规划将一个复杂的问题分解成若干个子问题,通过综合子问题的最优解来得到原问题的最优解。需要注意的是,动态规划会将每个求解过的子问题的解记录下来,这样当下一次碰到同样的子问题时,就可以直接使用之前记录的结果,而不是重复计算。
二、递推:
1、顺推法:从已知条件出发,逐步推算出要解决问题的方法。如:斐波那契数列
e.g. 母牛的故事
(题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2018)
问题分析:简单的递推计数。菲波拉契数列是是十分有用的,可以用来描述动物的繁衍过程。本题就是其中一个例子,其递推关系类似于斐波拉契数列。
表1.3母牛繁殖规律
在这里插入图片描述
这个问题可以得出以下的函数递推式:
f(n)=n n<=4
f(n)=f(n-1) + f(n-3) n>4

#include <stdio.h>
        int cow(int n)
        {
            if(n <= 4)
                return n;
            else
                return cow(n-1) + cow(n-3);
        } 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值