一篇文章带你搞懂动态规划问题

本文深入探讨动态规划的四大组成部分:确定状态、转移方程、初始条件和边界情况、计算顺序,并通过实例解析动态规划的特点和常见题型,如坐标型、位操作型、序列型等,旨在帮助读者掌握解决动态规划问题的关键技巧。
摘要由CSDN通过智能技术生成

前言

这篇博客主要是跟大家相互交流学习动态规划问题,下面记录的是一些我的学习心得。有不足的情况还望大家私聊交流指正。

我写这篇博客的思路大概是这样:首先解释下动态规划的关键概念,然后列出各种动态规划类型的题目,只要能够跟着我的博客完成之后的动态规划题目我觉得应该能够解决平时遇到的百分之90的动态规划的问题

一、动态规划的四大组成部分

1、确定状态

状态在动态规划中的作用至关重要。简单理解状态就是我们需要一个数组,数组中的每个元素就是代表状态。确定状态需要两个关键意识:最后一步和子问题。

(1)最后一步(可以直接根据问题来确定最后一步)

确定最后一步有两个关键点。这里我举个例子,例如常见的零钱兑换问题(你有三种硬币,分别是面值2元,5元,7元的,每种硬币足够多,买一本书需要27元,如何用最少的硬币组合正好付清)。我们不知道这个最优策略是啥,但是可以确定一定有最后的一枚硬币ak,除掉这枚硬币前面的币值加起来就是27-ak,我们不需要去关心前面的k-1枚硬币怎么拼出27-ak的,因为那就是我们的子问题。

(2)子问题

愿问题是用最少的硬币拼出27,而经过刚刚最后一步的确认,我们转化成了如何用最少的硬币拼出27-ak,这就是我们的子问题

确定好了最后一步和子问题,我们就可以开一个数组f[x]表示最少用多少枚硬币拼出X

2、转移方程

通过对最后一步和

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值