hdu 2602 Bone Collector
2014-03-08 19:40
155 查看
01背包的状态转换方程 f[i,j] = Max{ f[i-1,j-Wi]+Pi( j >= Wi ), f[i-1,j] }
f[i,j]表示在前i件物品中选择若干件放在承重为 j 的背包中,可以取得的最大价值。Pi表示第i件物品的价值。
决策:为了背包中物品总价值最大化,第 i件物品应该放入背包中吗 ?
#include<stdio.h> #include<string.h> int dp[1010][1010],w[1010],val[1010]; int max(int a,int b){ return a>b?a:b; } int main(){ int n,m,i,j,t; scanf("%d",&t); while(t--){ memset(dp,0,sizeof(dp)); memset(w,0,sizeof(w)); memset(val,0,sizeof(val)); scanf("%d%d",&n,&m); for(i=1;i<=n;i++){ scanf("%d",&val[i]); } for(i=1;i<=n;i++){ scanf("%d",&w[i]); } for(i=1;i<=n;i++){ for(j=0;j<=m;j++){ if(j>=w[i]){ dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+val[i]);//放还是不放的选择 }else{ dp[i][j]=dp[i-1][j]; } } } printf("%d\n",dp [m]); } return 0; }
相关文章推荐
- !HDU 2602 Bone Collector--DP--(裸01背包)
- HDU--2602 Bone Collector
- 【01背包】HDU 2602 Bone Collector (模板题)
- HDU 2602 Bone Collector
- [HDU 2602]Bone Collector ( 0-1背包水题 )
- Hdu 2602 Bone Collector
- hdu 2602 Bone Collector
- hdu 2602 Bone Collector 01背包
- HDU 2602 Bone Collector(01背包)
- 【日常练习 01背包】HDU 2602 Bone Collector
- hdu 2602 Bone Collector(0 1背包)
- HDU 2602 Bone Collector (01背包)
- Bone Collector - HDU 2602 01背包
- hdu 2602 Bone Collector (0-1)
- HDU 2602 Bone Collector (0-1背包)
- HDU 2602 Bone Collector ( DP )
- HDU 2602 Bone Collector
- 【HDU - 2602 】 Bone Collector 【01背包】
- HDU 2602 Bone Collector
- hdu 2602 Bone Collector