第三章:动态规划

动态规划算法的概念
动态规划是运筹学的一个分支,是求解决决策过程最优化的过程。
动态规划算法与分治法类似,其基本思想是将待求解问题分解成若干子问题,先求解子问题,再结合这些子问题的解得到原问题的解。与分治法不同的是,适合用动态规划法求解的问题经分解得到的子问题往往不是互相独立的。若用分治法来解决这类问题,则分解得到的子问题数目太多,以致最后解决原问题需要耗费指数级时间。
 

动态规划基本步骤:

1.寻找最优子结构

2.递归求解最优质

3.自底向上求解

4.根据结果构造路线

类似问题:

(1)矩阵连乘、石子合并、三角剖分

(2)0-1背包、双机调度

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
递推算法是一种通过已知的前一项值来推导出下一项值的数学算法。在计算机科学中,递推算法常用于解决循环或递归问题,通过将较大的问题拆解成较小的子问题来求解。 第三章讲解了递推算法的实现方法和应用场景。在C语言中,递推算法可以通过循环结构来实现。比如,斐波那契数列是一个经典的递推算法问题。通过定义前两项的初值为1,然后通过循环不断计算出下一项的值,最终得到一个斐波那契数列。 下面是一段使用递推算法计算斐波那契数列的C语言代码: ```c #include <stdio.h> int fibonacci(int n) { int a = 1; int b = 1; int c; if (n < 1) { return -1; // 输入不合法,返回错误代码 } else if (n < 3) { return 1; // 第一项和第二项的值为1 } for (int i = 3; i <= n; i++) { c = a + b; a = b; b = c; } return b; } int main() { int n = 10; int result = fibonacci(n); printf("第%d项的值为:%d\n", n, result); return 0; } ``` 通过循环计算,上述代码可以输出斐波那契数列的第10项的值为55。 递推算法在实际应用中还有很多其他的用途。比如,可以用递推算法来解决排列组合问题、动态规划问题等。在编程中,递推算法的优势在于其简单高效的计算方法,能够较快地求解问题。然而,有时候递推算法需要注意边界条件和初始值的设定,以避免出现错误的结果。 总结起来,递推算法是一种通过已知的前一项值来推导出下一项值的数学算法。在C语言中,递推算法可以通过循环结构来实现。递推算法在计算机科学中有着广泛的应用,能够简化问题求解的过程,提高计算效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值