南阳OJ106-背包问题(贪心算法)
创始人
2024-03-16 03:29:38
0

背包问题

时间限制: 3000 ms  |  内存限制: 65535 KB

难度: 3

描述

现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10);如果给你一个背包它能容纳的重量为m(10<=m<=20),你所要做的就是把物品装到背包里,使背包里的物品的价值总和最大。

输入

第一行输入一个正整数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

来源

[苗栋栋]原创

题意:有s个物体,一个背包容积为吗,现在有s个物体各自的质量和价值,求怎么样装满背包才能让其价值最大

分析:这其实是利用了贪心的思想,肯定是先挑价值大的装,装完后再装价值小的!明白这一点代码就很容易实现了!

#include
#include
#include
using namespace std;
struct as
{int v;int w;
}aa[11];//用结构体将物体的信息存起来 
bool cmp(as x,as y)
{return x.v>y.v;//按价值从高到底排序
}
int main()
{int n,s,m,i;scanf("%d",&n);while(n--){scanf("%d%d",&s,&m); for(i=0;i=aa[i].w)//如果背包剩下的体积够装下一种物体的全部,就全部都装进去 {sum+=aa[i].v*aa[i].w;m-=aa[i].w;}else{sum+=m*aa[i].v;//如果不够装下一种物体的全部,就能装多少是多少,装满为止 break;}}printf("%d\n",sum);//输出最多的价值 }return 0;
}


 

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...