首页 > 其他分享 >01背包问题

01背包问题

时间:2023-04-06 21:33:43浏览次数:41  
标签:01 cout 问题 背包 物品 include dp

题目链接

01背包问题

对于01背包,我也理解的感觉也不上特别透彻

视频讲解

下面是核心代码

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <vector>
#include <cstring>
#include <unordered_set>
#include <set>
#include <stack>
#include <map>
#include <cmath>
#include <sstream>
#include <queue>
//#define int long long
#define yes cout<<"YES"<<'\n'
#define no 	cout<<"NO"<<'\n'

using namespace std;
const int N = 1005;

int	dp[N][N] = {0};
signed main () {
	int n, m;
	scanf("%d %d", &n, &m);
	int v[N], w[N];
	for (int i = 1; i <= n; i++) {
		scanf("%d %d", &v[i], &w[i]);
	}
	//i表示这个背包可以装前i个物品,j表示这个背包的最大容量,dp[i][j]的值为这个背包所能装下的最大的价值
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {//将这个背包分解成n*m个背包,
			if (v[i] > j) {//如果当前背包的重量不能放入当前这个物品
				dp[i][j] = dp[i - 1][j];//所以这个背包转换为可以装前i-1个物品,容量为j的背包
			} else {
				//如果当前的背包可以放下当前的物品
				//dp[i-1][j],这个背包是不取第i个物品
				//dp[i-1][j-v[i]],这个背包是取出第i个物品
				//最后取这两个的最大值
				dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - v[i]] + w[i]);
			}
		}
	}
	cout << dp[n][m] << '\n';//通过dp数组直接得出结果

//	for (int i = 1; i <= n; i++) {
//		for (int j = 1; j <= m; j++) {
//			printf("dp[%d][%d]=%d\n",i,j,dp[i][j]);
//		}
//}
	return 0;
}

标签:01,cout,问题,背包,物品,include,dp
From: https://www.cnblogs.com/harper886/p/17294279.html

相关文章

  • day04-SpringCloud Eureka-服务注册与发现01
    SpringCloudEureka-服务注册与发现011.Eureka介绍1.1学习Eureka前的说明目前主流的服务注册&发现的组件是Nacos,但是Eureka作为老牌经典的服务注册&发现技术还是有必要学习一下,原因:(1)一些早期的分布式微服务项目使用的是Eureka,在工作中完全有可能遇到这种情况。(2)后期的服......
  • 一次线上OOM问题的个人复盘
    上个月,我们一个java服务上线后,偶尔会发生内存OOM(OutOfMemory)问题,但由于OOM导致服务不响应请求,健康检查多次不通过,最后部署平台kill了java进程,这导致定位这次OOM问题也变得困难起来。最终,在多次review代码后发现,是SQL意外地查出大量数据导致的,如下:<sqlid="conditions">......
  • ListView之setEmptyView的问题
    使用listView或者gridView时,当列表为空时,有时需要显示一个特殊的emptyview来提示用户,一般情况下,如果你是继承ListActivity,只要<ListViewandroid:id="@id/android:list".../><TextViewandroid:id="@id/android:empty.../>当列表为空时就会自动显示Tex......
  • 解决微信小程序主包过大,无法上传代码问题
    1、我的开发工具是HBuilderX,所以,在运行小程序的时候可以勾选运行>运行到模拟器>运行时是否压缩代码,   小程序运行时,这里会提示2、所以,可以选择发行>小程序-微信,注意括号的内容,只适用于uni-app   3、另外,在package.json文件里面加入 --minimize最小压缩 "dev:m......
  • 马克思的手稿问题
    题目说明背景信息:马克思手稿中有一道趣味数学问题:有30个人,其中有男人、女人和小孩。在一家饭馆吃饭共花了50先令;每个男人花了3先令,每个女人花了2先令,每个小孩花了1先令;问男人、女人和小孩各有几人?分析:设男人有x人,女人有y人,小孩有z人,根据题意得方程:x+y+z=30  ①;3x+2y+z=5......
  • 船舶的布局问题学习
    船舶的布局问题学习​ 船舶的布局问题包括许多小的布局类问题,包括船舶机舱设备的布局问题、船舶管路的布局问题、船舶舱室内属具的布局问题和船舶舱室划分布局问题等。船舶机舱设备的布局问题​ 船舶机舱设备布局设计属于密闭有限空间多目标优化设计问题,作为船舶的心脏,机舱设备......
  • begin :id := sys.dbms_transaction.local_transaction_id; end;问题
    我在session876中執行完下面sql后select*fromtable在到另一session中執行SELECT/*+ORDERED*/sql_textFROMv$sqltextaWHERE(a.hash_value,a.address)IN(SELECTDECODE(sql_hash_value,0,prev_hash_value,sql_hash_value),......
  • 洛谷P1552 [APIO2012] 派遣 题解 左偏树
    题目链接:https://www.luogu.com.cn/problem/P1552题目大意:每次求子树中薪水和不超过\(M\)的最大节点数。解题思路:使用左偏树维护一个大根堆。首先定义一个Node的结构体:structNode{ints[2],c,sz,dis;longlongsum;Node(){};Node(int_c){s......
  • 关于python安装模块之后pychram仍然提示没有安装模块的问题
    项目场景:如图所示:需要安装的包已经安装好,但是到了pycharm里就没法使用,相信很多小伙伴遇到过这个问题。原因分析:遇到这个问题的主要原因是你的电脑里安装了两个pycharm解释器,你安装后,实际上是安装到了你电脑的Python3而非pycharm解释器。解决方案:所以我们可以在pycharm里面直......
  • 项目中没有依赖Kotlin,结果报错Kotlin版本问题
    ​ 背景:使用intellij-idea工具,springboot项目,使用的maven问题:项目中没有依赖Kotlin,结果报错Kotlin版本问题,如下Kotlin:ModulewascompiledwithanincompatibleversionofKotlin.Thebinaryversionofitsmetadatais1.7.1,expectedversionis1.1.15.解决方案:......