贪心算法(一)假背包问题,圣诞老人的礼物
问题描述:
糖果有自己的价值和重量,每箱糖果可以拆分成任意散装组合带走,圣诞老人的驯鹿雪橇最多装下重量为w的糖果,请问圣诞老人最多带走多大价值的的糖果。
输入:
第一行由两个部分组成,分别为糖果箱数n(1<=n<=100,驯鹿能承受的最大重量正整数w(0<w<10000),两个数用空格隔开。其余n行每行对应一箱糖果,由两部分组成,分别为一箱糖果的价值正整数v,和重量正整数w,中间用空格隔开。
输出:
输出圣诞诞老人能带走的最大总价值,保留一位小数。
样例输入:
4 15
100 4
412 8
266 7
591 2
样例输出:
1193.0
解题思路:
根据价重比来计算,价重比大的有先考虑。
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
const double eps=1e-6;
struct Candy{int v;int w;bool operator <(const Candy &c){return double(v)/w-double(c.v)/c.w>eps;}
}candies[110];
int main()
{int n,w;int i;scanf("%d%d",&n,&w);for(i=0;i<n;i++){scanf("%d%d",&candies[i].v,&candies[i].w);}sort(candies,candies+n);int totalw=0;double totalv=0;for(i=0;i<n;i++){if(totalw+candies[i].w<=w){totalw+=candies[i].w;totalv+=candies[i].v;}else{totalv+=candies[i].v/candies[i].w*double(w-totalw);break;}}printf("%.1f",totalv);return 0;
}
补充知识点:
sort函数
头文件:
#include<algorithm>
using namespace std;
用法:
sort(首元素地址(必填),尾元素地址(必填),比较函数(非必填))
不写比较函数默认递增排序。
要么结构体中的重载,要么单独写比较函数。
贪心算法(一)假背包问题,圣诞老人的礼物相关推荐
- 贪心算法|Greedy Algorithms(背包问题)
贪心算法是一种用于优化问题的简单.直观的算法.该算法在寻找整体最优解的过程中,每一步都进行最优选择.贪心算法在一些问题上是非常成功的,例如用于压缩数据的霍夫曼编码,或者用于通过图寻找最短路径的Dijk ...
- 贪心算法 背包问题代码 c语言,用贪心算法求解普通背包问题的C++代码
用贪心算法求解普通背包问题的C++代码 2019年3月6日 125次阅读 来源: 贪心算法 #include #define M 100 void display(int &n,doubl ...
- 算法——贪心算法解0-1背包问题
问题的描述 我们先根据一个贪心算法的经典应用实例,然后给出贪心算法的实现步骤与关键环节,最后给出C++代码求解0-1背包问题. 背包问题(Knapsack Problem):有NN件物品有一个承重(也 ...
- 第十六章 贪心算法——0/1背包问题
1.问题描述: 给定n种物品和一背包.物品i的重量是wi,其价值为vi,背包的容量为C.问:应如何选择装入背包的物品,使得装入背包中物品的总价值最大? 形式化描述:给定c >0, wi > ...
- C++编程笔记:贪心算法实现部分背包问题
问题描述: 在部分背包问题中,可以不必拿走整个一件物品,而是可以拿走该物品的任意部分.以此求得在限定背包总重量,从给定的物品中进行选择的情况下的最佳(总价值最高)的选择方案. 细节须知: 分别输出到同 ...
- 算法设计与分析(第四周)贪心算法、背包问题
贪心算法 顾名思义,贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择.当然,希望贪心算法得到的最终结果也是整体最优的. 虽然贪心算 ...
- 贪心算法解决背包问题
贪心算法解决背包问题 问题描述: 给定 n 个物品和一个容量为 C 的背包,请给出物品装入背包的方案,使得背包中物品的总价值 M 最大,并满足: 1.每个物品 I 的重量为 wi,价值为 vi. 2. ...
- 贪心算法的设计与实现“背包问题+活动安排”
贪心法基本思想 求解最优化问题的贪心算法包含一系列步骤.每一步都在一组选择中做出在当前看 来最好的选择,希望通过做出局部优化选择达到全局优化选择.但贪心算法不一定总产 生优化解,所以一个贪心算法是否产 ...
- 算法设计与分析 贪心算法
这里写自定义目录标题 贪心算法 贪心算法解0-1背包问题的错误 贪心算法 贪心算法与动态规划算法相同的是对于要求解的问题都具有最优子结构. 贪心算法的基本要素是:贪心选择性和最优子结构. 贪心算法的思 ...
- 计算机算法设计与分析(第五版)---王晓冬--------前六章(递归与分治,动态规划,贪心算法,回溯法,)期末复习资料总结
--1-- 算法:解决问题的一种方法或者一个求解过程 是若干指令的序列 输入 输出 有限性 确定性 程序:用某种设计语言对算法的具体实现 可以不满足 有限性 程序 = 算法+数据结构 果子合并问题( ...
最新文章
- boost::statechart模块实现延迟错误的测试程序
- jquery-data的三种用法
- 【LeetCode笔记】406. 根据身高重建队列(Java、偏数学)
- 洛谷 P2590 BZOJ 1036 [ZJOI2008]树的统计
- 流过的时光... 想到了曾经的我某个情节我笑了...
- MySQL用命令行运行sql文件
- 阿里云数据库(hk)连接不上处理方法
- codewars题目
- 高3老师给大一学生的一封信
- 手机android进程管理,手机进程管理app_华为手机进程管理_手机自动进程管理软件-多特软件站安卓网...
- 分布式与集群的区别是什么
- ad hoc java_Java并发编程--线程封闭(Ad-hoc封闭 栈封闭 ThreadLocal)
- js判断是否是联通手机号
- 非常实用的织梦dede所有标签调用方法大全
- 计算机辅助教学毕业论文,计算机辅助教学管理——本科毕业论文规范化排版
- 叶问纵横四海战法公式
- educode寄存器设计与应用之循环移位寄存器的设计、并行存取的移位寄存器的设计(在Logisim上实现)
- 【算法】素数(质数)判断方法
- 遇到的android_bug总结
- UC/OS的46个系统函数