算法复习——01背包

news/2024/6/15 21:40:55 标签: 算法, 动态规划

01背包

在这里插入图片描述
DP分析法要素有:集合,属性,状态计算
(集合是指只考虑前i个,总体积小于等于j的所有选法,存取的属性是所有选法的最大值)
在这里插入图片描述
状态方程计算(所有选法可以分为2种不同的子集)
在这里插入图片描述
左边子集的属性:不含有第i个物品,所以表示为 f ( i − 1 , j ) f(i-1,j) fi1j
右边子集的属性:含有第i个物品(间接计算一下),
表示为 f ( i − 1 , j − v [ i ] ) + w j f(i-1,j-v[i])+w_j fi1jv[i]+wj
f ( i , j )的属性是上述二者的最大值 f(i,j)的属性是上述二者的最大值 fij)的属性是上述二者的最大值
代码如下:

#include <iostream>
#include <algorithm>
using namespace std;
int v[1010];
int w[1010];
int dp[1010][1010];
int main ()
{
    int i,j,n,m;
    cin>>n>>m;
    for(i=1;i<=n;i++)  cin>>v[i]>>w[i];//输入容积和价值
    for(i=1;i<=n;i++)//此时dp[0][j]一定是0
    {
        for(j=0;j<=m;j++)
        {
            if(j>=v[i]) dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+w[i]);//特判j大于v[i]的情况
            else dp[i][j]=dp[i-1][j];
        }
    }
    cout<<dp[n][m]<<endl;
    return 0;
}

ps:真正的初始化代码(只考虑前1个)应该是

for(j=1;j<=m;j++)
{
     if(j>=v[1]) dp[1][j]=w[1];
     else dp[1][j]=0;
}

而后i从2再开始进行状态计算,上述代码可以等价这个初始化代码,其他DP的题目的时候要注意DP的初始化。


http://www.niftyadmin.cn/n/5328704.html

相关文章

用JAVA实现樱花飘落

用java实现一个樱花飘落的方法 package Text2;import javax.swing.*; import java.awt.*; import java.util.ArrayList; import java.util.List;public class Sakura extends JFrame {private List<Point> sakuraList; // 樱花的位置列表public Sakura() {sakuraList n…

如何使用Docker一键部署WBO白板并实现固定公网地址远程访问

文章目录 前言1. 部署WBO白板2. 本地访问WBO白板3. Linux 安装cpolar4. 配置WBO公网访问地址5. 公网远程访问WBO白板6. 固定WBO白板公网地址 前言 WBO在线协作白板是一个自由和开源的在线协作白板&#xff0c;允许多个用户同时在一个虚拟的大型白板上画图。该白板对所有线上用…

ARP欺骗是什么,如何进行防护

ARP&#xff08;地址解析协议&#xff09;欺骗是一种常见的网络安全威胁&#xff0c;它利用了ARP协议的漏洞&#xff0c;对网络通信进行拦截和干扰。由于其高度的隐蔽性和广泛的适用场景&#xff0c;ARP欺骗已经成为一种难以防范的攻击方式。那么应该如何对其进行相应的防护措施…

代码随想录算法训练营第三十一天(回溯算法篇)|491. 非递减子序列, 46. 全排列,47. 全排列Ⅱ

491. 非递减子序列 题目链接&#xff1a;491. 非递减子序列 - 力扣&#xff08;LeetCode&#xff09; 思路 1. 判断是否将当前遍历到的元素添加到path中。 如果当前元素大于等于前一个元素&#xff0c;满足条件&#xff0c;但前提是当前的i>0&#xff0c;可若加上i>0…

3.3.2 CSMA/ CD协议

3.3.2 CSMA/ CD协议 CSMA/CD&#xff08;Carrier Sense Multiple Access with Collision Detection&#xff09;&#xff1a;载波监听多点接入/碰撞检测。 检测到碰撞后&#xff1a; 适配器立即停止发送。&#xff08;碰撞点后面的信号会一直叠加&#xff09;等待一段随机时间…

超强文档搜索引擎AnyTXT Searcher本地搭建

文章目录 前言1. AnyTXT Searcher1.1 下载安装AnyTXT Searcher 2. 下载安装注册cpolar3. AnyTXT Searcher设置和操作3.1 AnyTXT结合cpolar—公网访问搜索神器3.2 公网访问测试 4. 固定连接公网地址 前言 你是否遇到过这种情况&#xff0c;异地办公或者不在公司&#xff0c;想找…

Django教程第5章 | Web开发实战-数据统计图表(echarts、highchart)

专栏系列&#xff1a;Django学习教程 前言 highchart&#xff0c;国外。 echarts&#xff0c;国内。 本项目集成 hightchart和echarts图表库实现数据统计功能。 包括&#xff1a;折线图&#xff0c;柱状图&#xff0c;饼图和数据集图。 效果图 echats Highcharts 源代码…

XBox提升下载速度的方法

开头语&#xff1a; 欢迎大家来到本文&#xff01;如果你是Xbox玩家&#xff0c;相信下载速度对你来说是一个不可忽视的问题。本文将分享一些提升Xbox下载速度的方法&#xff0c;帮助你更快地获取游戏和更新。让我们一起来了解这些方法吧&#xff01; 方法一&#xff1a;有线连…