如何理解java贪心算法
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,今天就跟大家聊聊有关如何理解java贪心算法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。算法简介1)贪心算法是指在对问题进行求解时,在每一步
千家信息网最后更新 2025年02月04日如何理解java贪心算法
今天就跟大家聊聊有关如何理解java贪心算法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
算法简介
1)贪心算法是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致是最好或者最优的算法
2)贪心算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果。
应用场景 --> 集合覆盖
public class GreedyAlgorithm { public static void main(String[] args) { // 创建广播电台,放入到Map HashMap> broadcasts = new HashMap >(); // 将各个电台放入到broadcasts HashSet hashSet1 = new HashSet (); hashSet1.add("北京"); hashSet1.add("上海"); hashSet1.add("天津"); HashSet hashSet2 = new HashSet (); hashSet2.add("广州"); hashSet2.add("上海"); hashSet2.add("天津"); HashSet hashSet3 = new HashSet (); hashSet3.add("成都"); hashSet3.add("上海"); hashSet3.add("杭州"); HashSet hashSet4 = new HashSet (); hashSet4.add("上海"); hashSet4.add("天津"); HashSet hashSet5 = new HashSet (); hashSet5.add("杭州"); hashSet5.add("大连"); // 加入到map broadcasts.put("K1", hashSet1); broadcasts.put("K2", hashSet2); broadcasts.put("K3", hashSet3); broadcasts.put("K4", hashSet4); broadcasts.put("K5", hashSet5); // allAreas,存放所有的地区 HashSet allAreas = new HashSet (); allAreas.add("北京"); allAreas.add("上海"); allAreas.add("天津"); allAreas.add("广州"); allAreas.add("深圳"); allAreas.add("成都"); allAreas.add("杭州"); allAreas.add("大连"); // 创建ArrayList,存放选择的电台集合 ArrayList selects = new ArrayList (); // 定义一个临时的集合,在遍历的过程中,存放遍历过程中的电台覆盖的地区和当前还没有覆盖的地区的交集 HashSet tempSet = new HashSet (); // 定义一个maxKey,保存在一次遍历过程中,能够覆盖最多未覆盖的地区对应的电台的key // 如果maxKey不为null,则会加入到selects String maxKey = null; while (allAreas.size() != 0) {// 如果allAreas不为0,则表示还没有覆盖到所有的地区 // 每进行一次while,需要将maxKey置空 maxKey = null; // 遍历broadcasts,取出对应key for (String key : broadcasts.keySet()) { // 每进行一次for tempSet.clear(); // 当前这个key能够覆盖的地区 HashSet areas = broadcasts.get(key); tempSet.addAll(areas); // 求出tempSet 和 allAreas集合的交集,交集会赋给tempSet tempSet.retainAll(allAreas);// retainAll方法的作用就是求交集 // 如果当前这个集合包含的未覆盖地区的数量,比maxKey指向的集合地区还多 // 就需要重置maxKey // tempSet.size() > broadcasts.get(maxKey).size()) 体现出贪心算法的特点,每次都选择最优的 if (tempSet.size() > 0 && (maxKey == null || tempSet.size() > broadcasts.get(maxKey).size())) { maxKey = key; } } // maxKey != null,就应该将maxKey加入selects if (maxKey != null) { selects.add(maxKey); // 将maxKey指向的广播电台覆盖的地区,从allAreas去掉 allAreas.removeAll(broadcasts.get(maxKey)); } } System.out.println("得到的选择结果是" + selects); }}
看完上述内容,你们对如何理解java贪心算法有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
地区
算法
电台
上海
选择
交集
结果
天津
内容
过程
杭州
广播电台
指向
最好
北京
大连
广州
成都
广播
作用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发项目管理 ppt
软件开发问答试题及答案
扫一扫网络技术有限公司
网络安全工作岗位环境怎么样的
广州软件开发薪资水平
lol手游此服务器无法开启
c 软件开发和后台开发
数据库怎么创建架构
网络安全工程师李华飚
一个空间可以绑定几个数据库
小萌的新服务器
查询数据库锁表语句333
关系数据库系统应用
深圳彩帛网络技术有限公司
西电网络安全与信息化工作会议
江苏机械软件开发技巧
网络技术网管及网络监控方法
虚拟机配置外部时间服务器
gta5有些什么服务器
网络安全教育活动课程
数据库巡检报告
mc服务器测压工具
湖州电子网络技术优势
苏州专业软件开发哪家好
网络安全维护承诺书
计算机网络技术与云计算
梦幻西游月亮湖新区在什么服务器
pop 收件服务器
业务协同服务器
云ftp服务器