nyoj106 背包问题
2015-08-11 11:43
232 查看
#include <stdio.h> struct Beibao { int v;//题意中v为每个物品的单位重量的价值 int w;//每个物体的总重量 }; int main() { int k; Beibao a[11],t; scanf("%d",&k); while(k--) { int s,m; scanf("%d%d",&s,&m);//s为物品件数 m为总限重 int i,j; for(i=0;i<s;i++) scanf("%d%d",&a[i].v,&a[i].w); for(i=0;i<s-1;i++) for(j=i+1;j<s;j++) { if(a[i].v<a[j].v) { t=a[i]; a[i]=a[j]; a[j]=t; } } int x=0,y=0; for(i=0;i<s;i++) { if((x+a[i].w)<m) { x=x+a[i].w; y=y+a[i].w*a[i].v; } else { y=y+(m-x)*a[i].v;//重量加起来不超过限重的就直接计算价值 超过或等于了就分隔算一下在原来价值的基础上又能增加多少 求总和即可 break; } } printf("%d\n",y); } return 0; }这个一定要看清题意 是单位价值 且这是可分割的背包问题 用贪心算法即可
相关文章推荐
- Python中的列表、元祖、字典
- Parentheses Balance
- 【SpringMVC整合MyBatis】案例驱动-集合类型参数绑定
- 欢迎使用CSDN-markdown编辑器
- 字符测试 =~ 用法
- App Transport Security has blocked a cleartext HTTP (http://) 和Swift 2 中的异常处理
- 小心别让圆角成了你列表的帧数杀手
- github readme 格式
- vector<T>
- Android异步加载学习笔记之一:用AsyncTask加载服务器json数据
- IOS开发:发布APP
- 为什么relativelayout.layoutParams的width为-1
- FeatureLayer,FeatureDataset,FeatureClass,Feature几个概念一点点总结
- Cocos2d-JS 3.3 模态对话框的实现
- 认识Backbone (四)
- 利用ffmpeg0.5 和libjpeg实现抽取视频帧并将其保存为jpeg文件格式程序
- hdoj 1879 继续畅通工程 【最小生成树】
- ecshop代码笔记
- TCP/IP协议学习之五(UDP协议)
- 在WINSEVER2008 上搭建FTP服务器