如何理解java贪心算法
发表于:2025-02-16 作者:千家信息网编辑
千家信息网最后更新 2025年02月16日,今天就跟大家聊聊有关如何理解java贪心算法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。算法简介1)贪心算法是指在对问题进行求解时,在每一步
千家信息网最后更新 2025年02月16日如何理解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安全错误
数据库的锁怎样保障安全
美国网络安全特征
中等职业教育网络安全
万达金融网络安全吗
realm服务器如何更新
h1z1在哪儿选服务器
把上一行填充到下一行数据库
网络安全挑战赛郑州
关于网络安全的利和弊短篇
学习软件开发排行
克尔瑞数据库登录网址
职场网络安全事件
易云游网络技术 罗军
大学生的网络安全问题
tbc土豪最多的服务器
ios手机软件开发多少钱
两套账服务器如何保障安全
杭州攻略网络技术有限公司
浏览国外网站代理服务器
旧服务器键盘
电网网络安全设备升级报道
电脑我的世界服务器无法连接
数据库非本地
数据库查阅某时间段的数据记录
网络安全没有硝烟的战争
java软件开发人员绩效
关系型数据库学习难点
服务器点对点
国网网络安全实战攻防新闻稿
旧服务器键盘
网络安全模型p2dr