贪心算法

贪心算法:只顾眼前的苟且。

即在对问题求解时,总是做出在当前看来是最好的选择

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

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

货物重量: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>() {
@Override
public 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;
}

Java蓝桥杯——贪心算法的更多相关文章

  1. 算法笔记_107:蓝桥杯练习 算法提高 学霸的迷宫(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要 ...

  2. 算法笔记_096:蓝桥杯练习 算法提高 求最大值(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的ai+bi的和最大.并且要求你选定的数对的ai之和非负,bi之和非负 ...

  3. Java实现 蓝桥杯VIP 算法训练 连通分块(并查集)

    试题 算法训练 连通分块 资源限制 时间限制:200ms 内存限制:8.0MB 问题描述 连通分块 输入格式 输入的第一行包含两个整数n, m n代表图中的点的个数,m代表边的个数 接下来m行,每行2 ...

  4. Java实现 蓝桥杯VIP 算法训练 无权最长链

    试题 算法训练 无权最长链 问题描述 给定一个n节点m边的无圈且连通的图,求直径 输入格式 第一行两个数字n,m 接下来m行每行两个数字x,y,代表x,y之间有一条边 输出格式 要求用户的输出满足的格 ...

  5. Java实现 蓝桥杯VIP 算法训练 星际交流

    算法训练 星际交流 时间限制:1.0s 内存限制:256.0MB 问题描述 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法 ...

  6. Java实现 蓝桥杯VIP 算法训练 Car的旅行路线

    大家可以看一下这个,蓝桥杯官网的这道题是有问题的 Car的旅行路线 算法训练 Car的旅行路线 时间限制:1.0s 内存限制:256.0MB 提交此题 锦囊1 锦囊2 查看参考代码 问题描述 又到暑假 ...

  7. Java 蓝桥杯 算法训练(VIP) 最大体积

    最大体积 问题描述 每个物品有一定的体积(废话),不同的物品组合,装入背包会战用一定的总体积. 假如每个物品有无限件可用,那么有些体积是永远也装不出来的. 为了尽量装满背包,附中的OIER想要研究一下 ...

  8. Java实现 蓝桥杯VIP 算法训练 JAM计数法

    题目描述 Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小 写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数都是相同的(使用相同个数的字母),英文 ...

  9. Java实现 蓝桥杯VIP 算法训练 阿尔法乘积

    蓝桥杯–阿尔法乘积 问题描述 计算一个整数的阿尔法乘积.对于一个整数x来说,它的阿尔法乘积是这样来计算的:如果x是一个个位数,那么它的阿尔法乘积就是它本身:否则的话,x的阿尔法乘积就等于它的各位非0的 ...

随机推荐

  1. ffmpeg 部分api delphi 版

    ffmpeg 是一套强大的开源的多媒体库  一般都是用 c/c++ 调用, 抽空研究了一下该库的最新版 ,把部分api 翻译成了dephi版的 记录一下 地址   ffmpegvcl.zip

  2. DES 实现

    原理 加密 置换: IP逆置换: 迭代: PC-1置换: PC-2置换: 子秘钥的生成: 加密函数f: 解密 代码 // C语言实现 #include<stdio.h> #include& ...

  3. [Luogu P2014]选课 (树形DP)

    题面 传送门:https://www.luogu.org/problemnew/show/P2014 Solution 这是一道十分经典的树形DP题,这种类型的树形DP有一种很普遍的解法. 首先,观察 ...

  4. 【CHOJ】磁力块

    题意描述 磁力块 在平面内分布着 \(N\) 个磁力块,同时你的手上也有一块. 你一开始站在给定的坐标上,当磁力块之间满足互相吸引的条件时就可以吸引. 当你拿到新的磁石时你就可以用它来吸引更多的石头, ...

  5. c# 生成xml的结构 专业代码

    详细看代码把 public ArrayList kepingyi(string names="") { ArrayList list = new ArrayList(); stri ...

  6. Grafana+Prometheus+node_exporter监控,Grafana无法显示数据的问题

    环境搭建: 被测linux机器上部署了Grafana,Prometheus,node_exporter,并成功启动了它们. Grafana中已经创建了Prometheus数据源,并测试通过,并且导入了 ...

  7. spring-cloud-config 多服务共享公共配置的解决方案总结,太全了!

    问题描述 我们公司的项目是基于SpringCloud开发的微服务,用到了Spring-Cloud-Config作为微服务统一的配置中心,可以将散落在各个服务的配置进行统一配置管理. 虽然配置中心将各个 ...

  8. 【Mycat】Mycat核心开发者带你轻松掌握Mycat路由转发!!

    写在前面 熟悉Mycat的小伙伴都知道,Mycat一个很重要的功能就是路由转发,那么,这篇文章就带着大家一起来看看Mycat是如何进行路由转发的,好了,不多说了,我们直接进入主题. 环境准备 软件版本 ...

  9. java enum 枚举值

    public enum PieChartEnum { PIE00("pie00"), PIE10("pie10"), PIE11("pie11&quo ...

  10. tcp 拥塞控制引擎&状态机

    TCP核心:流量控制   拥塞控制 流量控制:滑动窗口来实现, 防止接收方能够处理过来 拥塞控制:防止过多的包被发送到网络中,避免出现网络负载过大 说一说 拥塞控制: 拥塞控制状态机的状态有五种,分别 ...