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

背包问题

时间:2024-07-04 18:57:43浏览次数:13  
标签:背包 int 问题 flag MAXN MAXM define

背包问题

背包,即询问一个背包装最大价值的物品总价值。

01 背包

例题:P1048 采药

想到使用 DP。

\[f_{i,j} = \left\{\begin{matrix} \max f_{i-1,j-c_i} , f_{i-1,j} & j \ge c_i\\ f_{i-1,j} & j < c_i \end{matrix}\right. \]

(公式中,\(f_{i,j}\) 表示使用前 \(i\) 个物品,重量小于 \(j\) 的价值最高量;\(c_i\) 指本物品的重量,\(w_i\) 指本物品的价值)

Code1

#include <iostream>
using namespace std;
#define MAXN 105
#define MAXM 1005
int w[MAXN], c[MAXN];
int f[MAXN][MAXM];
int main()
{
	int v,n;
	cin>>v>>n;
	for(int i=1;i<=n;i++) cin>>c[i]>>w[i];
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<=v;j++)
		{
			if(j>=c[i]) f[i][j]=max(f[i-1][j-c[i]]+w[i],f[i-1][j]);
			else f[i][j]=f[i-1][j];
		}
	}
	cout<<f[n][v];
	return 0;
}

Code2

#include <iostream>
using namespace std;
#define MAXN 105
#define MAXM 1005
int w[MAXN], c[MAXN];
int f[2][MAXM];
int main()
{
	int v,n;
	cin>>v>>n;
	for(int i=1;i<=n;i++) cin>>c[i]>>w[i];
	bool flag=true;
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<=v;j++)
		{
			if(j>=c[i]) f[flag][j]=max(f[1-flag][j-c[i]]+w[i],f[1-flag][j]);
			else f[flag][j]=f[1-flag][j];
		}
		flag=1-flag;
	}
	cout<<f[1-flag][v];
	return 0;
}

标签:背包,int,问题,flag,MAXN,MAXM,define
From: https://www.cnblogs.com/zhangyuyi1218/p/-/Knapsack_problem

相关文章

  • 解决安装初始软件语句不成功问题
    yum-yinstallntpopensshwgetvimopenssh-clientsopensslgccopenssh-serverpython-devel这条是不好使的语句我们不好使的原因是镜像有问题这里我们需要看的博客:https://ask.csdn.net/questions/74132201、先备份mv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos......
  • 关于airtest生成的报告中缺少poco语句问题
    1、airtest生成的报告只显示airtest的相关操作,如果是poco和airtest-selenium的操作则不记录。因此需要在报告中引用插件。支持poco语句插件,poco.utils.airtest.report支持airtest-selenium语句插件,airtest_selenium.report2、在IDE运行.py脚本报告生成的依据是脚本运行时保......
  • keil5.40版,下载程序到smt32后,解决机器不复位的问题
    该版本下载程序到stm32后,机器不会自动复位。 1.首先确保,FlashDownload选项卡中的选项ResetandRun已被选中:2.但是下载程序后,发现不能自动复位,每次需要手动点击reset按钮,比较麻烦,原因是在5.40版本中,要取消以下设置:3.取消enable的设置后,后续就可以自动复位了,复位按钮的寿......
  • 解决 .NET Core 和 nginx 双重配置 CORS 问题
    解决.NETCore和nginx双重配置CORS问题在开发基于.NETCore的Web应用时,经常会遇到跨域资源共享(CORS)的问题。跨域请求是指浏览器从一个不同的域、协议或端口访问资源。在现代Web开发中,跨域请求非常常见,但为了安全,浏览器会阻止这些请求,除非服务器明确允许。最近在配置......
  • PTrade量化软件常见问题整理系列1
    一、get_fundamentals获取无数据返回。    get_fundamentals(g.stock_list,'profit_ability','roic',context.previous_date)返回nan。解决方案:1、返回同样的列表,获取valuation表,数据返回正常;2、建议在研究内执行get_fundamentals('00065*.SZ','profit_ability',......
  • PTrade量化软件常见问题整理系列2
    一、研究界面使用get_fundamentals函数报错:error_info:获取token失败?    研究界面使用get_fundamentals函数报错:error_info:获取token失败?1、测试版本202202.01.052,升级202202.01.051版本后,为了解决不同机器请求openapi时使用不同token导致token失效而频繁切换token,做......
  • Kithara常见问题解答
    目录通用问题我的内核驱动程序已经签名了吗?是否可以在打开驱动程序时防止显示介绍窗口?Windows7仍然支持吗?错误0x10142422(`KSERROR_CANNOT_START_KERNEL`)在`KS_openDriver`时出现?错误10145241(KSERROR_CANNOT_START_KERNEL)在KS_openDriver时出现?可以在C#应用程......
  • program files 文件夹权限问题
    首先关闭系统管理员对普通管理员的权限按Windows+R键,打开“运行”,然后输入“gpedit.msc",就是打开组策略,这个在控制面板中也可以打开。在组策略里找到“计算机配置”-“Windows设置”-“安全设置”-“本地策略”-“安全选项”,在“安全选项”里认真查找“用户帐户控制-以管理员模......
  • Windows11系统System.Workflow.Activities.dll文件丢失问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个System.Workflow.Activities.dll文件(挑选合......
  • Windows11系统System.Windows.Forms.DataVisualization.resources.dll文件丢失问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个System.Windows.Forms.DataVisualization.re......