背包问题
来源:互联网 发布:天刀公子羽数据 编辑:程序博客网 时间:2024/06/07 10:24
- 输入
- 第一行输入一个正整数n(1<=n<=5),表示有n组测试数据;
随后有n测试数据,每组测试数据的第一行有两个正整数s,m(1<=s<=10);s表示有s个物品。接下来的s行每行有两个正整数v,w。 - 输出
- 输出每组测试数据中背包内的物品的价值和,每次输出占一行。
- 样例输入
- 1
3 15
5 10
2 8
3 9 - 样例输出
- 65
- 代码:
#include <iostream>#include <bits/stdc++.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */using namespace std;struct p//这个参量声明应该可以随意性 { int v;//单位重量价值 int w;//重量} a[11];bool cmp(p x,p y){//选择函数 bool型 return x.v>y.v;}int main(int argc, char *argv[]) {int s,m,n,i,j,sum;cin>>s;while(s--){cin>>n>>m;//n是物品个数,m个包的总重量for(i=0;i<n;i++){cin>>a[i].v>>a[i].w;}sort(a,a+n,cmp);//价值从高到低的排序 结构体的好处就在于此时物品的重量也随之改变!sum=0;for(i=0;i<n;i++){if(m>=a[i].w){sum=sum+a[i].v*a[i].w;m=m-a[i].w;}else{sum=sum+m*a[i].v; //可分割!!!break;}} cout<<sum<<endl;}return 0;}
阅读全文
0 0
- 【无限背包】背包问题
- 背包问题---01背包
- 背包问题--部分背包
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- 背包问题
- java Data、String、Long三种日期类型之间的相互转换
- SELECT-OPTIONS的用法
- 对数据结构一点一小小的理解(七)——二叉树
- js实现下拉选中option移动
- 如何提高编程
- 背包问题
- jdk1.7之vector
- 每周荐书:Swift、Java、React(评论送书)
- 关于一款广告软件的一点想法
- 在虚拟机中安装centos遇到的问题
- editor.md集成到web项目
- 对Fast rcnn论文的一个大致翻译
- PythonCharm实践
- Networking Benchmarks