01背包,买东西
来源:互联网 发布:淘宝买游戏币安全吗 编辑:程序博客网 时间:2024/06/11 17:03
题目:
同学说这个题需要以价格和需要钱数的差值排序,我没有那样做,虽然过了,但是我觉得我这样做有问题。
代码:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct node{int a;int b;int c;} ;bool cmp(node a,node b){if(a.b!=b.b) return a.b>b.b;return a.a<b.a;}bool cmp2(node a,node b){if(a.b!=b.b) return a.b<b.b;return a.a<b.a;}main(){int f[5010],f2[5010];int i; struct node p[5550];int sum;int n,V,v; while(scanf("%d%d",&n,&V)!=EOF){memset(f,0,sizeof(f));memset(f2,0,sizeof(f2));for(i=0;i<n;i++){scanf("%d%d%d",&p[i].a,&p[i].b,&p[i].c);}sort(p,p+n,cmp);for(i=0;i<n;i++){for(v=V;v>=p[i].b;v--){if(f[v]<f[v-p[i].a]+p[i].c)f[v]=f[v-p[i].a]+p[i].c;}}sort(p,p+n,cmp2);for(i=0;i<n;i++){for(v=V;v>=p[i].b;v--){if(f2[v]<f2[v-p[i].a]+p[i].c)f2[v]=f2[v-p[i].a]+p[i].c;}}if(f[V]>f2[V])sum=f[V];elsesum=f2[V];printf("%d\n",sum);}}
0 0
- 01背包,买东西
- 买东西
- 买东西
- 买东西
- 买东西
- 穷举-买东西
- 买东西砍价策略
- 第一次在taobao买东西
- 今天出去买东西了
- 去超市买东西 日记
- 正品,买东西 去哪里
- 买东西要谨慎
- 【背包专题】01背包
- 01背包,完全背包
- 01背包 完全背包
- 01背包/完全背包
- 01背包,完全背包
- 背包问题---01背包
- Learning a Deep Compact Image Representation for Visual Tracking的部分翻译和个人理解
- JAVA语言特性 THIS SUPER 案例
- memcache的原理和命中率的总结
- GitHub上最火的74个Android开源项目
- Step By Step(Lua表达式和语句)
- 01背包,买东西
- Android UI 适配经验
- iPhone4 屏幕不亮复活记
- ios -- ViewController跳转+传值(方式一)
- Android 字体属性及测量 确定字体大小
- 优先队列(堆)的构建时间复杂度分析
- C++中delete和delete[]的区别(博客转载)
- Step By Step(Lua基础知识)
- Apache与Tomcat的区别和联系