hud_bone Collector
来源:互联网 发布:达芬奇调色 知乎 编辑:程序博客网 时间:2024/06/01 07:12
这是一道全裸的01背包,好像除了可能测试数据中存在有价值但是耗费为0的数据,其他的就是套用01背包的模板就能过了。有两个代码,一个是用二维数组,另一个是一维数组,二维的比较好理解,一维的空间复杂度较小,各有所长。
#include<stdio.h>#include<iostream>#include<string.h>#include<algorithm>using namespace std;int max(int a,int b){ return a>b? a:b;}int t,cost[1100],value[1100],dp[1100];int main(){ scanf("%d",&t); while(t--) { int n,v; scanf("%d%d",&n,&v); for(int i=1;i<=n;i++) scanf("%d",&value[i]); for(int i=1;i<=n;i++) scanf("%d",&cost[i]); memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) { for(int j=v;j>=0;j--) { if(j>=cost[i]) dp[j]=max(dp[j],dp[j-cost[i]]+value[i]); else dp[j]=dp[j]; // cout<<dp[j]<<" "; } // cout<<endl; } cout<<dp[v]<<endl; } return 0;}
#include<stdio.h>#include<iostream>#include<string.h>#include<algorithm>using namespace std;int max(int a,int b){ return a>b? a:b;}int t,cost[1100],value[1100],dp[1100][1100];int main(){ scanf("%d",&t); while(t--) { int n,v; scanf("%d%d",&n,&v); for(int i=1;i<=n;i++) scanf("%d",&value[i]); for(int i=1;i<=n;i++) scanf("%d",&cost[i]); memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) { for(int j=0;j<=v;j++) { if(j>=cost[i]) dp[i][j]=max(dp[i-1][j],dp[i-1][j-cost[i]]+value[i]); else dp[i][j]=dp[i-1][j]; } } cout<<dp[n][v]<<endl; } return 0;}
0 0
- hud_bone Collector
- Bone Collector
- Bone Collector
- Bone Collector
- Bone Collector
- Bone Collector
- Bone Collector
- Bone Collector
- Hdu2602_Bone-Collector
- Bone Collector
- Bone Collector
- Bone Collector
- HDOJ2602Bone Collector
- Bone Collector
- Bone Collector
- Bone Collector
- hduoj2602Bone Collector
- Bone Collector
- 以clone和序列化方式实现对象复制
- Wikioi 1012
- Permutations
- 初学thinkphp
- Wikioi 1014
- hud_bone Collector
- HDU 3488 费用流 圈
- 十大致癌食物黑名单公布 葵花子竟然排第一(图)
- 树链剖分-点的分治(链的点的个数为k的点对数)
- Android 网络通信框架Volley简介(Google IO 2013)
- POJ 1195 Mobile phones(树状数组)
- hdu 2089 不要62
- 多校联合训练赛 第三场--B - The battle near the swamp
- Ubuntu12.04 侧边栏不显示图标-解决方案