贪心算法

贪心算法:只顾眼前的苟且。
即在对问题求解时,总是做出在当前看来是最好的选择

如买苹果,专挑最大的买。

最优装载问题——加勒比海盗

货物重量:Wi={4,10,7,11,3,5,14,2}
海盗船载重:C
求如何拿货件数最多

package bb;
import java.util.Arrays;
public class 最优装载 {static int[] W = { 4, 10, 7, 11, 3, 5, 14, 2 };static int C = 30;// 开发效率:// 运行效率:public static void main(String[] args) {int count = 0;Arrays.sort(W);for (int n : W) {System.out.println(n);}System.out.println("------------");// 从小的开始装for (int i = 0; i < W.length; i++) {if (C < W[i]) {// 剩余的载重量装不下一件break;} else {System.out.println(W[i] + " ");count++;// 装进来C = C - W[i];}}System.out.println("一共带走:" + count + "件");}
}

阿里巴巴

山洞有宝贝n件,重量w,价值v
毛驴能运的重量最大为m,宝贝可以切开。问:如何带走价值最大的宝贝?
策略1:选价值最大——不行
策略2:选重量最小——不行
策略3:性价比(单位重量价值最大)
测试数据:
static int m = 30;
static int w[] = { 4, 2, 9, 5, 5, 8, 5, 4, 5, 5 };
static int v[] = { 3, 8, 18, 6, 8, 20, 5, 6, 7, 15 };
(背包问题——物品可以切割,0-1背包问题——不能切割,贪心算法不能得到最优解)

package bb;
import java.util.Arrays;
import java.util.Comparator;
public class 阿里巴巴 {// 第一套数据// static int m = 30;//(总价值70.5,装入5.25件)// static int w[] = { 4, 2, 9, 5, 5, 8, 5, 4, 5, 5 };// static int v[] = { 3, 8, 18, 6, 8, 20, 5, 6, 7, 15 };// 第二套数据(总价值24.6,装入4.3件)static int m = 19;static int w[] = { 2, 6, 7, 4, 10, 3 };static int v[] = { 8, 1, 9, 3, 2, 4 };public static void main(String[] args) {Goods[] gs = new Goods[w.length];for (int i = 0; i < w.length; i++) {gs[i] = new Goods();gs[i].w = w[i];gs[i].v = v[i];gs[i].cost_performance = (double) v[i] / w[i];// 性价比}Arrays.sort(gs, new Comparator<Goods>() {@Overridepublic int compare(Goods o1, Goods o2) {return -o1.cost_performance.compareTo(o2.cost_performance);}});double vTotal = 0.0;for (Goods g : gs) {System.out.println(g.w + "\t" + g.v);if (m > g.w) {m = m - g.w;// 剩余能带走的重量vTotal += g.v;} else {double 切割比例 = (double) m / g.w;double 最后价值 = g.v * 切割比例;vTotal += 最后价值;break;}}System.out.println("共带走价值" + vTotal + "的宝贝");}
}
class Goods {int w;int v;Double cost_performance;
}

转载于:https://www.cnblogs.com/tigerlion/p/11190989.html

Java蓝桥杯——贪心算法相关推荐

  1. [Java] 蓝桥杯ALGO-149 算法训练 5-2求指数

    问题描述 已知n和m,打印n^1,n^2,-,n^m.要求用静态变量实现.n^m表示n的m次方.已知n和m,打印n^1,n^2,-,n^m.要求用静态变量实现.n^m表示n的m次方.(每行显示5个数, ...

  2. [Java] 蓝桥杯ALGO-151 算法训练 6-2递归求二进制表示位数

    问题描述 给定一个十进制整数,返回其对应的二进制数的位数.例如,输入十进制数9,其对应的二进制数是1001,因此位数是4. 样例输入 一个满足题目要求的输入范例. 9 样例输出 与上面的样例输入对应的 ...

  3. [Java] 蓝桥杯ALGO-152 算法训练 8-2求完数

    问题描述 如果一个自然数的所有小于自身的因子之和等于该数,则称为完数.设计算法,打印1-9999之间的所有完数. 样例输出 与上面的样例输入对应的输出. 例: 数据规模和约定 1-9999 packa ...

  4. [Java] 蓝桥杯ALGO-2 算法训练 最大最小公倍数

    问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少. 输入格式 输入一个正整数N. 输出格式 输出一个整数,表示你找到的最小公倍数. 样例输入 9 样例输出 504 ...

  5. [Java] 蓝桥杯ALGO-48 算法训练 关联矩阵

    问题描述 有一个n个结点m条边的有向图,请输出他的关联矩阵. 输入格式 第一行两个整数n.m,表示图中结点和边的数目.n<=100,m<=1000. 接下来m行,每行两个整数a.b,表示图 ...

  6. [Java] 蓝桥杯ALGO-122 算法训练 未名湖边的烦恼

    问题描述 每年冬天,北大未名湖上都是滑冰的好地方.北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩. 每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个.现在 ...

  7. [Java] 蓝桥杯ALGO-148 算法训练 5-1最小公倍数

    问题描述 编写一函数lcm,求两个正整数的最小公倍数. 样例输入 一个满足题目要求的输入范例. 例: 3 5 样例输出 与上面的样例输入对应的输出. 例: 数据规模和约定 输入数据中每一个数的范围. ...

  8. [Java] 蓝桥杯ALGO-150 算法训练 6-1 递归求二项式系数值

    问题描述 样例输入 一个满足题目要求的输入范例. 3 10 样例输出 与上面的样例输入对应的输出. 数据规模和约定 输入数据中每一个数的范围. 例:结果在int表示时不会溢出. package alg ...

  9. [Java] 蓝桥杯ALGO-125 算法训练 王、后传说

    问题描述 地球人都知道,在国际象棋中,后如同太阳,光芒四射,威风八面,它能控制横.坚.斜线位置. 看过清宫戏的中国人都知道,后宫乃步步惊心的险恶之地.各皇后都有自己的势力范围,但也总能找到相安无事的办 ...

最新文章

  1. windows2008域下exchange2007sp1部署系列一
  2. 漂亮特殊字体可复制_12个创意字体免费下载网站
  3. Java 基础知识总结(下)-王者笔记《收藏版》
  4. Spring Boot 实际应用(三)发送邮件实现
  5. Linux查询pg数据库账号密码,PostgreSQL登录数据库
  6. 吴恩达深度学习2.3练习_Improving Deep Neural Networks_Tensorflow
  7. 玩转jquery插件之flexigrid 【转】
  8. Go语言---字符串的基本操作
  9. MySQL数据库的常用命令语句记录——安全用户语句及函数
  10. Linux安装与基本操作命令与JDK的安装,Mysql的安装,Tomcat的安装
  11. error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
  12. 从appfuse开始学习Spring和Hibernate - (1)构建项目
  13. day06 数据类型(中)
  14. 计算机应用程序没声音,电脑突然没声音,多半是这三个原因导致的-维修经验...
  15. Java 算法之三色旗
  16. Android开发——应用宝推广渠道出现MD5值重复,请勿重复上传
  17. 在bandwagon上架设web服务器
  18. 高洛峰招徒培养IT名师
  19. Qt Charts使用(重写QChartView,实现一些自定义功能)
  20. 1038 01背包动态规划

热门文章

  1. swift--添加新手引导页
  2. [转载]TFS安装配置教程
  3. nginx处理web请求分析
  4. 使用EntityFramework6连接MySql数据库(db first方式)
  5. 【转】POJ 2104 K-th Number(2)
  6. cocos对象池的使用
  7. 如何解决虚拟机频繁分离和附加磁盘导致的识别错误
  8. MyEclipse中删除对Struts、hibernate、spring的支持
  9. 批量修改在索引中增加字段
  10. 一个完整的Core Data应用