动态规划(算法+理论) ★最短路径

首先介绍动态规划的概念:
①问题是由交叠的自问题构成的,是对给定问题求解的递推关系中的相同类型的*更小子问题的解*dp+回溯
②从顶至下,避免计算不需要计算的小解(记忆)
③求解最优化问题可以用动态规划
动态规划下笔写代码前先去顶递推式
直接看实例:
一、币值最大化问题
给定一排n个硬币,其面值均为正整数c1,c2,c3……cn,这些整数并不一定两两不同,请问如何选择硬币,使得在其原始位置互不相邻的条件下,所选金额最大。

上述最大金额可用fn来表示,为了得到fn的递推关系,将所有可行的选择分为两组,包括最后一枚硬币和不包括最后一枚硬币的。

F(N)={① 包括最后一枚硬币 cn+f(n-2)
②不包括最后一枚硬币 f(n-1)
其递推式:
**则 fn=max{cn+f(n-2),f(n-1)}
f(0)=0,f(1)=c1**

coinrow(c[1..n])
//应用上述递推式,自底向上求最大金额
//在满足所选硬币不相邻的条件下,从一排硬币中选择最大金额的硬币
//输入:数组c保存n个硬币的面值,下标从1开始
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值