Java十大经典算法——贪心算法

算法概念:

贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法;贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果

算法应用:

1.集合覆盖问题

 

public class ListCover {public static void main(String[] args) {//定义广播台HashMap<String, HashSet<String>> broadcasts = new HashMap<String,HashSet<String>>();HashSet<String> hashSet1=new HashSet<String>();hashSet1.add("北京");hashSet1.add("上海");hashSet1.add("天津");HashSet<String> hashSet2=new HashSet<String>();hashSet2.add("广州");hashSet2.add("北京");hashSet2.add("深圳");HashSet<String> hashSet3=new HashSet<String>();hashSet3.add("成都");hashSet3.add("上海");hashSet3.add("杭州");HashSet<String> hashSet4=new HashSet<String>();hashSet4.add("上海");hashSet4.add("天津");HashSet<String> hashSet5=new HashSet<String>();hashSet5.add("杭州");hashSet5.add("大连");broadcasts.put("K1",hashSet1);broadcasts.put("K2",hashSet2);broadcasts.put("K3",hashSet3);broadcasts.put("K4",hashSet4);broadcasts.put("K5",hashSet5);//获取所有地区//从HashMap中取出所有的所有值存入HashSet(值不重复)HashSet<String> allCities=new HashSet<String>();
//        System.out.println(broadcasts.values());for(HashSet<String> hashSet:broadcasts.values()){allCities.addAll(hashSet);}System.out.println("所有地区:"+allCities);//存放选择的电台集合ArrayList<String> selects = new ArrayList<String>();//定义一个临时的集合,在遍历的过程中,存放遍历过程中的电台覆盖的地区和当前还没有覆盖的地区的交集HashSet<String> tempSet = new HashSet<String>();//定义给 maxKey , 保存在一次遍历过程中,能够覆盖最大未覆盖的地区对应的电台的 key//如果 maxKey 不为 null , 则会加入到 selectsString maxKey = null;while (allCities.size() != 0){//每一次进行while循环都需要置为nullmaxKey=null;//遍历broadcast,取出对应key值for (String key:broadcasts.keySet()) {//每次循环都需置空HashSettempSet.clear();//当前key能覆盖的区域HashSet<String> areas = broadcasts.get(key);tempSet.addAll(areas);//求出tempSet和allCities的交集,交集赋给tempSettempSet.retainAll(allCities);//如果当前这个集合包含的未覆盖地区的数量,比 maxKey 指向的集合地区还多就需要重置 maxKeyif (tempSet.size() > 0 && (maxKey == null || tempSet.size() > broadcasts.get(maxKey).size())) {maxKey = key;}}//maxKey != null, 就应该将 maxKey 加入 selectsif(maxKey!=null){selects.add(maxKey);//将 maxKey 指向的广播电台覆盖的地区,从 allAreas 去掉allCities.removeAll(broadcasts.get(maxKey));}}System.out.println("得到的选择结果是"+selects);}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/343408.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯单片机组备赛——LED指示灯的基本控制

&#x1f388;教程介绍&#xff1a;博客依据b站小蜜蜂老师的教程进行编写&#xff0c;文中会对老师传授的知识进行总结并加入自己的一些理解。教程链接 文章目录 一、点灯介绍二、相关数字芯片介绍2.1 74HC138介绍2.2 74HC573介绍2.3 74HC02介绍 三、代码设计思路四、代码编写…

gazebo模型库目录(国内源)

这个是比较普遍的&#xff0c;一般用途&#xff1a; GitCode - 开发者的代码家园https://gitcode.com/geniusChinaHN/osrf.gazebo_models/tree/master/ambulance这个主要是车辆&#xff1a; car_demo: osrf汽车模型库https://gitee.com/geniuschinahn/car_demo还有这个是以前…

测绘资质工程测量乙级资质办理条件

新测绘资质分为10个专业&#xff1a; 1.大地测量 2.测绘航空摄影 3.摄影测量与遥感 4.工程测量 5.海洋测绘 6.界线与不动产测绘 7.地理信息系统工程 8.地图编制 9.导航电子地图制作 10.互联网地图服务。 新《测绘资质管理办法》和《测绘资质分类分级标准》&#xff…

深入理解计算机系统(2):信息的表示和处理

信息存储 大多数计算机使用 8 位的块&#xff0c;或者字节(byte)&#xff0c;作为最小的可寻址的内存单位&#xff0c;而不是访问内存中单独的位。机器级程序将内存视为一个非常大的字节数组&#xff0c;称为虚拟内存(virtual memory)。内存的每个字节都由一个唯一的数字来标识…

32个图片素材库网站,有些直接免费商用!

划到最后“阅读原文”——领取工具包&#xff08;超过1000工具&#xff0c;免费素材网站分享和行业报告&#xff09; Hi&#xff0c;我是胡猛夫~&#xff0c;专注于分享各类价值网站、高效工具&#xff01; 更多内容&#xff0c;更多资源&#xff0c;欢迎交流&#xff01; 公 …

x-cmd pkg | smartctl - 用于监测和分析硬盘的工具

目录 简介首次用户功能特点竞品和相关作品进一步阅读 简介 smartctl 是一个用于监测和分析硬盘中 S.M.A.R.T.&#xff08;自我检测&#xff0c;分析和报告技术&#xff09;信息的命令行工具&#xff0c;是 Smartmontools 的一部分。通过 smartctl 工具&#xff0c;可以分析各种…

day-07 统计出现过一次的公共字符串

思路 用哈希表统计words1和words2中各个字符串的出现次数&#xff0c;次数皆为1的字符串符合题意 解题方法 //用于存储words1中各个字符串的出现次数 HashMap<String,Integer> hashMap1new HashMap<>(); //用于存储words2中各个字符串的出现次数 HashMap<Stri…

SQL--case语句

case语句&#xff0c;按从上到下的书写顺序计算每个WHEN子句的布尔表达式。返回第一个取值为TRUE的布尔表达式所对应的结果表达式的值。如果没有取值为TRUE的布尔表达式&#xff0c;则当指定了ELSE子句时,返回ELSE子句中指定的结果&#xff1b;如果没有指定ELSE子句&#xff0c…

PCIe进阶之Gen3 Physical Layer Receive Logic(一)

1 文章概述 本篇文章是接着前面两篇文章进一步研究Gen3 Physical Layer Receive Logic的实现,具体包含Differential Receiver,CDR(Clock and Data Recovery)和Receiver Clock Compensation Logic 三个部分的介绍和解析。 1.1 Differential Receiver Gen3的Differential …

多级缓存架构(一)项目初始化

文章目录 一、项目克隆二、数据库准备三、项目工程准备 一、项目克隆 克隆此项目到本地 https://github.com/Xiamu-ssr/MultiCache 来到start目录下&#xff0c;分别有以下文件夹 docker&#xff1a;docker相关文件item-service&#xff1a;springboot项目 二、数据库准备 …

Casper Network (CSPR)2024 年愿景:通过投资促进增长

Casper Network (CSPR&#xff09;是行业领先的 Layer-1 区块链网络之一&#xff0c;通过推出了一系列值得关注的技术改进和倡议&#xff0c;已经为 2024 年做好了准备。 在过去的一年里&#xff0c;Casper Network (CSPR&#xff09;不断取得里程碑式的进展&#xff0c;例如推…

58.leetcode 最后一个单词的长度

一、题目 二、解答 1. 思路 分2种情况 第一种情况只有一个单词&#xff0c;不包含空格&#xff1a;这种情况直接返回单词本身的长度。第二种情况包含空格&#xff1a;先去掉首尾的空格&#xff0c;根据空格切割字符串生成一个字符串列表&#xff0c;返回倒数第一个索引位置字…