HDU 2602 Bone Collector (01背包模板)

来源:互联网 发布:火鸟中文移动编程下载 编辑:程序博客网 时间:2024/05/17 06:11

 

 

 

链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602

很简单的一道模板题目。

这里就不解释题目的意思了。

 

以下是01背包模板。

 

#include<iostream>#include<stdio.h>#include<cstring>using namespace std;int n,v;int V[1000],value[1000],dp[1000];int Max(int a,int b){if(a>b)return a;elsereturn b;}void ZeroOnePace(int V,int value){int i;for(i=v;i>=V;i--) //01背包中,i从要求的背包体积开始,到当前体积。dp[i]=Max(dp[i],dp[i-V]+value);  // dp存的是价值}int main(){    int Case;scanf("%d",&Case);while(Case--){memset(V,0,sizeof(V));memset(value,0,sizeof(value));memset(dp,0,sizeof(dp));scanf("%d %d",&n,&v); //数量,背包体积int i,j;for(i=0;i<n;i++)scanf("%d",&value[i]); //价值for(i=0;i<n;i++)scanf("%d",&V[i]); //体积for(i=0;i<n;i++)ZeroOnePace(V[i],value[i]); //当前体积和当前价值printf("%d\n",dp[v]);}return 0;}/*15 10       5个东西,10体积的背包1 2 3 4 5  价值5 4 3 2 1  体积14求价值最大*/


 

 

原创粉丝点击