计蒜客 [蒜头君的购物袋1] 01背包问题
2018-01-14 12:31
218 查看
蒜头君去超市购物,他有一只容量为 VVV的购物袋,同时他买了 nnn件物品,已知每件物品的体积 viv_ivi。蒜头君想知道,挑选哪些物品放入购物袋中,可以使袋子剩余的空间最小。
输入格式
第一行输入一个整数 VVV(1≤V≤20,0001V \leq 20,0001≤V≤20,000),表示购物袋的容量。第二行输入一个整数 nnn(1≤n≤301\leq n \leq 301≤n≤30),表示蒜头君购买的nnn件物品。接下来输入 nnn行,每行输入一个整数 viv_ivi(1≤vi≤10,0001\leq v_i \leq 10,0001≤vi≤10,000),表示第iii件物品的体积。输出格式
输出一行,输出一个整数,表示购物袋最小的剩余空间。样例输入
20 5 7 5 7 3 7
样例输出
1
典型的01背包问题
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(int argc, char *argv[]){int max2=0;int v,n,i,j;scanf("%d%d",&v,&n);int dp[v+10],w[n+10];memset(dp,0,sizeof(dp));for(i=1;i<=n;i++){scanf("%d",&w[i]);}for(i=1;i<=n;i++){for(j=v;j>=w[i];j--){dp[j] = max(dp[j-w[i]]+w[i],dp[j]);if(max2<=dp[j]){max2= dp[j];}}}printf("%d",v-max2);return 0;}int max (int a,int b){if(a>=b){return a;}else{return b;}}
相关文章推荐
- 计蒜客 蒜头君的购物袋2 (01背包)
- 计蒜客习题:蒜头君的购物袋 2
- 计蒜客习题:蒜头君的购物袋 1
- 计蒜客习题:蒜头君的购物袋 3
- 计蒜客 蒜头君的购物袋1
- 计蒜客 蒜头君的购物口袋2 01背包问题
- 背包问题九讲笔记_01背包
- DP_01背包_装箱问题
- 01背包问题几种算法实现
- HDU - 2602(动态规划,01背包问题)
- 动态规划之01背包问题(最易理解的讲解)
- 01背包问题--Java
- JAVA动态规划(五)--01背包问题及装箱问题
- ACM 01背包问题1
- poj3624_Charm Bracelet (01背包问题)
- 深度优先搜索+动态规划——01背包类似问题
- 动态规划之01背包问题
- 计蒜客--蒜头君回家
- 01背包问题 详细推导
- 回溯法-01背包问题之一:递归模式