大家好,又见面了,我是你们的朋友全栈君。
✨动态规划——0/1背包问题(全网最细+图文解析)
作者介绍:
🎓作者:青花瓷✨ 👀作者的Gitee: 📌系列文章推荐: ✨1.数据结构与算法—算法篇之动态规划(一) ✨2.【Java刷题特辑第一章】——【点进来花两把游戏的时间学习晚上睡觉都踏实了】 ✨3.【Java刷题特辑第二章】—— 这些经典笔试题,你确定都做过吗? ✨✨我和大家一样都是热爱编程✨,很高兴能在此和大家分享知识,希望在分享知识的同时,能和大家一起共同进步,取得好成绩🤳,今天和大家分享的章节是 ,如果有错误❌,欢迎指正哟😋,咋们废话不多说,跟紧步伐,开始学习吧~😊
前言:
背包问题是一个很经典的动态规划问题,这一篇博客采取图文解析的方式,帮助你更好的理解,废话不多说,我们开始学习吧✨🤳
文章目录
一 题目描述:
有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?
为了方便讲解和理解,下面讲述个例子:
二 总体思路:
根据(问题抽象化、建立模型、寻找约束条件、判断是否满足最优性原理、找大问题与小问题的递推关系式、填表、寻找解组成)找出01背包问题的最优解以及解组成,然后编写代码实现。
如果对还不清楚的同学可以去看一下我前面发的一篇DP大总结希望能够帮到你:数据结构与算法—算法篇之动态规划(一)
三 动态规划的原理:
动态规划方法的原理就是把多阶段决策过程转化为一系列的单阶段决策问题,利用各个阶段之间的递推关系,逐个确定每个阶段的最优化决策,最终堆叠出多阶段决策的最优化决策结果。
首先我们先来推导,找一下递推关系和状态转移方程:
很显然这道题的状态转移方程:
为了方便理解 这里
填表,首先初始化边界条件,然后一行一行的填表: 根据前面的推导,这个表格很容易就能填,我们只需要把对应的价值填上去就行了
“种一颗树最好的是十年前,其次就是现在” 所以, “让我们一起努力吧,去奔赴更高更远的山海”
如果有错误❌,欢迎指正哟😋
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/164402.html原文链接:https://javaforall.cn
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/3611.html