一、动态规划
代表一类问题(最优子结构或子问题最优性)的一般解法,是设计方法或者策略,不是具体算法
本质:递推,核心是找到状态转移的方式,写出dp方程。
解决问题:交叉,重叠子问题(最优子问题)
形式:
记忆型递归
递推
与深搜的区别:深搜要所有符合条件的解,动态规划要求最优解(唯一解)
二、题目
有n个重量和价值分别为wi和vi的物品,从这些物品中挑选出重量不超过w的物品,求所有挑选方案中价值总和的最大值。
1<=n<=100
1<=wi,vi<=100
1<=w<<10000
输入:
n=4
(w,v)={(2,3),(1,2),(3,4),(2,3)}
w=5
输出
7(选择第0,1,3号物品)


分析思路
通常可以用execl分析

根据表格思路写代码

  • 代码
package bag01jiyidigui;public class Bag_dp {static int[] w= {2,1,3,2}; //重量表static int[] v= {3,2,4,2};  //价值表static int n=4; //物品数量static int W=5; //背包的承重极限static int max(int a,int b) {return a;}static int dp() {int[][]dp=new int[n][W+1];//初始化dp表中的第一行for(int i=0;i<W+1;i++) {if(i>=w[0]) { //每种容量-0号物品dp[0][i]=v[0];}else {dp[0][i]=0;}}//其他行for(int i=1;i<n;i++) {//j是列,也是背包的剩余容量for(int j=0;j<W+1;j++) {if(j>=w[i]) {  //要的起,在承重范围内int i1=v[i]+dp[i-1][j-w[i]]; //选择当前物品即i号物品,剩余容量int i2=dp[i-1][j];dp[i][j]=max(i1,i2);}else {dp[i][j]=dp[i-1][j];}}}return dp[n-1][W];}
}

动态规划---01背包问题--Dp(详解附代码)相关推荐

  1. 动态规划之0-1背包问题(详解+分析+原码)

    ⭐️前面的话⭐️ 本篇文章将介绍算法专题之动态规划中的背包问题,更准确的说是背包问题中最简单的一种类型,即0-1背包问题,就是给你一定容量的背包和若干物品,每种物品只能选一次,告诉你每件物品的价值和体 ...

  2. 动态规划01背包算法详解

    动态规划算法核心思想: 将大的问题转化为小问题进行解决. 01背包问题: 01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的重量为W1,W2至Wn,与之相对应的价值为V1V2至Vn.01背 ...

  3. 动态规划之如何将问题抽象转化为0-1背包问题(详解利用动态规划求方案数)

    ⭐️前面的话⭐️ 本篇文章介绍如何对问题抽象转化成0-1背包问题求解和运用0-1背包求方案数.

  4. 【排序】堆排序详解 附代码

    按照国际惯例,开篇前先简单介绍(吹一波)堆排序(Heapsort).Heapsort是一种优秀的排序算法(个人感觉基本排序算法中仅次于快速排序),时间复杂度为O(nlgn),同时,Heapsort具有 ...

  5. 各种进制转换(二,八,十,十六进制间转换)详解附代码

    进制转换 原理 进制转换是人们利用符号来计数的方法.进制转换由一组数码符号和两个基本因素"基数"与"位权"构成. 基数是指,进位计数制中所采用的数码(数制中用来 ...

  6. 前序遍历、中序遍历、后序遍历层序遍历详解附代码(数据结构C语言)

    目录 (1)前序遍历 (DLR) 递归算法 (2)中序遍历 (LDR) 递归算法 (3)后序遍历 (LRD) 递归算法 (4)层序遍历 队列实现方法 层序遍历的定义: 实现方法: 代码实现 结果截图 ...

  7. Numpy学习笔记(二):argmax参数中axis=0,axis=1,axis=-1详解附代码

    文章目录 1.argmax和max函数区别 2.axis=0/axis=1/axis=-1的区别 3.具体代码分析 ---3.1一维数组 ---3.2二维数组 ---3.3三维数组 1.argmax和 ...

  8. 随机分布嵌入(RDE)框架详解附代码

    介绍 研究了好一阵子马欢飞老师在PNAS上发的文章,下面附上个人的研究心得与代码与大家讨论. 在基于非线性系统的理论基础上,延迟嵌入理论以及广义嵌入理论等相空间重构的理论基础上,观察者便有可能从一个观 ...

  9. c++实现贪吃蛇详解(附代码)

    文章目录 前言 一.运行界面 二.类的大致抽象 三.关于一些问题的思考 四.最后一些想说的 五.代码 前言 经过一个多月的学习,又加深了对c++的理解,所以接下来,就和大家分享一下,一个月学习c++的 ...

最新文章

  1. 空跑Python程序
  2. Ubuntu16.04中的可重定位目标文件
  3. servlet与jsp的联系与区别
  4. linux重启查看日志及历史记录 查询原因
  5. mimo的误码率_混合波束成形专栏|基础:深入浅出5G,毫米波,大规模MIMO与波束赋形...
  6. Linux 文件与目录管理+用户管理命令(详解+练习)
  7. SAP UI5 Fiori startup service
  8. 魔兽世界客户端数据研究(三)
  9. MySQL配置与启动
  10. 如何设置修改 Windows 7 开机启动项
  11. LTE 调制与解调——QPSK,16QAM,64QAM误码率比较
  12. jdk1.8_API中英文帮助文档下载
  13. z-blogPHP在西部数码虚拟主机上遇到WTS-WAF错误拦截情况,协商好久他们还是妥协了...
  14. Docker Study Note
  15. linux压缩解压工具效率,linux压缩解压工具
  16. 计算机学院篮球队介绍,2018年校级篮球联赛计算机与信息学院篮球队专访
  17. win7电脑计算机上配置无线网,Win7无线网络共享设置方法
  18. shell脚本--杀死进程
  19. 让vc编译出的程序减小体积
  20. java快速入门知识整理:9、java数据类型:布尔型(boolean)

热门文章

  1. python爬虫什么意思-python爬虫可以爬什么
  2. Nuance语音识别技术及解决方案
  3. 做好嘈杂环境的语音识别,目前难点主要在哪里?
  4. 微信AI开放接口介绍
  5. Kaldi语音识别库linux环境下的安装和编译
  6. 100.Day12反射机制_qq_38205875的博客
  7. 数据库并发抢红包_Redis悲观锁解决高并发抢红包的问题
  8. Vue实现按钮和文本框的切换
  9. java多线程按行读取文件_“java”中多线程按行读取txt且每个线程读的内容不能重复,这么求“demo”?...
  10. 解决Spring MVC整合Shiro出现无法访问静态资源文件的问题