装箱问题
2016-05-05 20:42
197 查看
【问题描述】
有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30=,每个物品有一个体积(正整数)。
要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
【输入文件】
第一 行一个正整数V表示箱子的容量,第二行一个正整数N表示物品个数,接下来N行列出这N个物品各自的体积。
【输出文件】
单独一行,表示箱子最小的剩余空间。
【输入样例】
24
6
8
3
12
7
9
7
【输出样例】
0
有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30=,每个物品有一个体积(正整数)。
要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
【输入文件】
第一 行一个正整数V表示箱子的容量,第二行一个正整数N表示物品个数,接下来N行列出这N个物品各自的体积。
【输出文件】
单独一行,表示箱子最小的剩余空间。
【输入样例】
24
6
8
3
12
7
9
7
【输出样例】
0
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #include<math.h> #define N 1000000 using namespace std; int fun(int a,int b) { return a>b?a:b; } int main() { int v,n,dp[110],a[110]; int i,j; scanf("%d%d",&v,&n); for (int i=0;i<n;i++) scanf("%d",&a[i]); memset(dp,0,sizeof(dp)); for (i=0;i<n;i++) for (j=v;j>=a[i];j--) dp[j]=fun(dp[j],dp[j-a[i]]+a[i]); printf("%d\n",v-dp[v]); return 0; }
相关文章推荐
- POJ 2244 Eeny Meeny Moo
- 多线程实现的方式3:(开启不同的线程,分别进行求和)
- 网络仿真工具TOTEM之——mpls构建LSP
- HDOJ(HDU) 2186 悼念512汶川大地震遇难同胞——一定要记住我爱你
- android 自学日记(六) ——SAX解析中换行问题解决
- HDOJ(HDU) 2186 悼念512汶川大地震遇难同胞——一定要记住我爱你
- 对称的二叉树
- StringUtil
- 自动化运维工具Ansible详细部署
- 船
- 手动制作hadoop-eclipse-plugin插件
- 异常
- Android Studio Gradle编译报input jar file is specified twice
- C++中引用类型
- Buy Low Buy Lower
- 蓝桥杯 PREV-6-翻硬币
- Ubuntu下vi输入i不进入insert插入模式
- ArrayList
- 设计模式中类的关系
- 二进制中1的个数----位运算