
有一个箱子容量为V(正整数,0 ≤ V ≤ 20000),同时有n个物品(0<n ≤ 30),每个物品有一个体积(正整数)。
要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
题目
- 原题地址:装箱问题
- 题目编号:NC16693
- 题目类型:DP、01背包
- 时间限制:C/C++ 1秒,其他语言2秒
- 空间限制:C/C++ 262144K,其他语言524288K
1.题目大意
n
个物品任取若干个装入箱内,求箱子的剩余空间的最小值
2.题目分析
c[i][j]
表示前i
个物品在容量为j
时的最大体积
3.题目代码
#include <bits/stdc++.h>
using namespace std;
int n, v, a[35], c[35][20005];
int dp(int i,int j) {
if(c[i][j]>0) return c[i][j];
if(!i) return 0;
c[i][j] = (j>=a[i-1])?max(dp(i-1,j),dp(i-1,j-a[i-1])+a[i-1]):dp(i-1,j);
return c[i][j];
}
int main() {
cin >> v >> n;
for(int i=0;i<n;i++) cin >> a[i];
cout << v-dp(n,v) << endl;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!