博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1507NASA食物
阅读量:5046 次
发布时间:2019-06-12

本文共 843 字,大约阅读时间需要 2 分钟。

这道题是一个01背包的延伸题,只要透彻理解了,就不难了。

这个题有两个T,一个是体积一个是质量,所以这时候我们必须要加一个for了,同时要优化空间(三维降二维),然后用f[j][k]来表示当体积为j,质量为k时的最大价值,加一个for,最后输出即可。

1.再去复习所有背包问题,再去推导方程,注意不同之处

2.j与k不要for到0,for到v[i]或m[i]即可

代码

#include
#include
#include
#include
#define N 10001 using namespace std;int dp[500][500];//当体积为T1,质量为T2时可以装下的 int T1,T2;//体积与质量 int v[50],m[50],value[50];int n;int main(){ scanf("%d%d",&T1,&T2); memset(dp,0,sizeof(dp)); scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d%d%d",&v[i],&m[i],&value[i]); } for(int i=1;i<=n;i++){ for(int j=T1;j>=v[i];j--){ for(int k=T2;k>=m[i];k--){ dp[j][k]=max(dp[j][k],dp[j-v[i]][k-m[i]]+value[i]); } } } cout<

 

转载于:https://www.cnblogs.com/china-mjr/p/11222964.html

你可能感兴趣的文章
Super Moban
查看>>
wpf 点击button,下拉Popup显示按钮或信息
查看>>
C#中唯一的三元运算符
查看>>
中投公司/中央汇金/中金公司股权结构
查看>>
Python之集合
查看>>
账户系统需求分析
查看>>
IntelliJ IDEA里面配置任何路径的时候路径里面的反斜杠分隔符变成了钱币符号
查看>>
maven打jar包命令
查看>>
列表,表格和媒体元素
查看>>
POJ 1274
查看>>
WebApi的windows服务之路
查看>>
hdu1083Courses 二分匹配
查看>>
Codeforces Round #256 (Div. 2) A Rewards
查看>>
实验二
查看>>
SPOJ - COT2 Count on a tree II
查看>>
【sklearn】中文文档
查看>>
设计模式——5.桥模式
查看>>
UIButton
查看>>
Hadoop-2.2.0中文文档—— Shell命令
查看>>
徒弟涨工资排行榜
查看>>