当前位置:网站首页>ACM01背包问题
ACM01背包问题
2022-08-09 11:02:00 【抓个马尾女孩】
问题描述:给定N中物品和一个背包。物品i的重量是Wi,其价值位Vi,背包的容量为C。问应该如何选择装入背包的物品,使得转入背包的物品的总价值为最大?
f[i,j]表示在前i件物品中选择若干件放在承重为 j 的背包中,可以取得的最大价值。
Pi表示第i件物品的价值。
#include<iostream>
using namespace std;
const int maxn=2000;
int a[maxn][maxn],w[maxn],c[maxn];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i=i+1)
cin>>w[i]>>c[i];
for(int i=1;i<=m;i=i+1)
for(int v=n;v>0;v=v-1)
{
if(w[i]<=v) a[i][v]=max(a[i-1][v],a[i-1][v-w[i]]+c[i]);
else a[i][v]=a[i-1][v];
}
cout<<a[m][n]<<endl;
return 0;
}
边栏推荐
猜你喜欢
随机推荐
Since I use the HiFlow scene connector, I don't have to worry about becoming a "dropper" anymore
golang interface “坑记录“
ThreadLocal及其内存泄露分析
基于STM32设计的环境检测设备
聚类了解
研发需求的验收标准应该怎么写? | 敏捷实践
focusablejs
PTA 求一批整数中出现最多的个位数字
The complete grammar of CSDN's markdown editor
MATLAB中如何把cftool拟合的函数输出到命令行(解决如何导出拟合后的曲线数据)
MATLAB代码实现三次样条插值
Mysql多表查询
性能测试(06)-逻辑控制器
获取指定年度所有周的工具类
【VIBE: Video Inference for Human Body Pose and Shape Estimation】论文阅读
activemq message persistence
faster-rcnn learn
支付宝小程序的接入
多商户商城系统功能拆解26讲-平台端分销设置
Qt读写.ini配置文件









