NASA的食物计划
NASA的食物计划
题目传送门
题目告诉我们要在体积和重量都不超过的情况下输出最大卡路里,稍微思考一下就可以发现这题是一道01背包的变形题(01背包不会的点这里)。
并且01背包需要空间优化。
那我们就照dp的角度去想
动态转移方程
蒟蒻不会英文
注意,由于是01背包所以质量和体积要从大到小循环
#include<bits/stdc++.h>
using namespace std;
struct node
{
int kj,z,t;//从左到右依次为:食物的卡路里、质量、体积
}food[600];
int n,z,t;
int dp[5000][5000];//dp数组
int main()
{
scanf("%d%d",&t,&z);
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d%d",&food[i].t,&food[i].z,&food[i].kj);
}
for(int i=1;i<=n;i++)
{
for(int j=z;j>=food[i].z;j--)//循环质量
{
for(int k=t;k>=food[i].t;k--)//循环体积
{
dp[j][k]=max(dp[j][k],dp[j-food[i].z][k-food[i].t]+food[i].kj);//方程
}
}
}
printf("%d",dp[z][t]);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现