当前位置: 首页 > news >正文

设计方案表网站名称泰安网站建设哪家强

设计方案表网站名称,泰安网站建设哪家强,深圳网站建设公司哪里有,广州宣布5条优化措施应用场景——集合覆盖问题 假设存在下面需要付费的广播台,以及广播台信号可以覆盖的地区。如何选择最少的广播台,让所有的地区都可以接收到信号 贪心算法介绍 1.贪心算法是指在对问题进行求解时,在每一步选择中都采取最好或者最优的选择 2…
应用场景——集合覆盖问题

假设存在下面需要付费的广播台,以及广播台信号可以覆盖的地区。如何选择最少的广播台,让所有的地区都可以接收到信号

贪心算法介绍

1.贪心算法是指在对问题进行求解时,在每一步选择中都采取最好或者最优的选择

2.贪心算法得到的结果不一定是最优的结果,但是都是相对近似最优解的结果

思路分析

使用贪心算法的效率非常高,选择策略上,由于需要覆盖全部小区的所有集合:

1.遍历所有的广播电台,找到一个覆盖了最多未覆盖地区的电台(此电台可能包含一些已覆盖的地区,但没有关系)

2.将这个电台加入到一个集合中(比如 ArrayList),想办法把该电台覆盖的地区在下次比较时去掉

3.重复第 1 步直到覆盖了全部的地区

用代码实现集合覆盖问题
public class GreedyAlgorithm {public static void main(String[] args) {//创建广播电台,放入到 MapHashMap<String, HashSet<String>> broadcasts = new HashMap<>();//将各个电台放入到 broadcastsHashSet<String> hashSet1 = new HashSet<>();hashSet1.add("北京");hashSet1.add("上海");hashSet1.add("天津");HashSet<String> hashSet2 = new HashSet<>();hashSet2.add("广州");hashSet2.add("北京");hashSet2.add("深圳");HashSet<String> hashSet3 = new HashSet<>();hashSet3.add("成都");hashSet3.add("上海");hashSet3.add("杭州");HashSet<String> hashSet4 = new HashSet<>();hashSet4.add("上海");hashSet4.add("天津");HashSet<String> hashSet5 = new HashSet<>();hashSet5.add("杭州");hashSet5.add("大连");//加入到 Mapbroadcasts.put("k1", hashSet1);broadcasts.put("k2", hashSet2);broadcasts.put("k3", hashSet3);broadcasts.put("k4", hashSet4);broadcasts.put("k5", hashSet5);//allAreas 存放所有地区HashSet<String> allAreas = new HashSet<>();allAreas.add("北京");allAreas.add("上海");allAreas.add("天津");allAreas.add("广州");allAreas.add("深圳");allAreas.add("成都");allAreas.add("杭州");allAreas.add("大连");//创建 ArrayList,存放选择的电台集合ArrayList<String> selects = new ArrayList<>();//定义一个临时的集合,在遍历过程中,存放遍历过程中电台覆盖的地区和当前还没有覆盖的地区的交集HashSet<String> tempSet = new HashSet<>();/*定义一个 maxKey,保存在一次遍历过程中,能够覆盖最大未覆盖地区的电台的 key如果 maxKey 不为 null,则会加入到 selects*/String maxKey = null;while (allAreas.size() != 0) {  //如果 allAreas 不为 0,则表示还没有覆盖到所有的地区//每进行一次 while,需要maxKey = null;//遍历 broadcasts,取出对应 keyfor (String  key : broadcasts.keySet()) {//每进行一次 fortempSet.clear();//当前这个 key 能够覆盖的地区HashSet<String> areas = broadcasts.get(key);tempSet.addAll(areas);//求出 tempSet 和 allAreas 集合的交集,交集会赋给 tempSettempSet.retainAll(allAreas);//如果当前这个集合包含的未覆盖地区的数量,比 maxKey 指向的集合地区还多//就需要重置 maxKey// (maxKey == null || tempSet.size() > broadcasts.get(maxKey).size()) 体现出贪心的特点if (tempSet.size() > 0 &&(maxKey == null || tempSet.size() > broadcasts.get(maxKey).size())) {maxKey = key;}}//maxKey != null,就应该将 maxKey 加入 selectsif (maxKey != null) {selects.add(maxKey);//将 maxKey 指向的广播电台覆盖的地区,从 allAreas 去掉allAreas.removeAll(broadcasts.get(maxKey));}}System.out.println("得到的选择结果是" + selects);}
}
http://www.yayakq.cn/news/402830/

相关文章:

  • 太原网站设计制作厂房设计装修公司
  • 外包服务网站排名h5怎么制作进入下一页
  • 营销型网站的推广方法公众号怎么开通留言功能
  • 有什么网站可以做推广wordpress代码上传到服务器
  • 移动网站打不开解决办法山东平台网站建设推荐
  • 网站建设3000字宣传中心网站建设
  • 腾讯专门做数据标注的网站是京东联盟网站怎么做
  • 服务好的高端网站建设企业wordpress仿站价格
  • 便宜模板网站建设wordpress 收费阅读
  • 淘宝网站内站建设西安seo培训
  • 网站维护需要做什么嘉兴网站建设费用
  • 化工销售怎么做网站平台公司转型方案
  • 河北建设部官方网站房地产市场分析及前景
  • 网站策划模版网站存在风险怎么解决
  • 建设培训网站云南高端建设网站
  • 南宁网站推广v1温州网站网络公司
  • 东阳实惠营销型网站建设厂家在线免费看1921完整版
  • 西安网站建设云速html简单网页
  • 网站 逻辑结构天津网站建设开发
  • 学会网站开发有什么好处discuz应用中心模板
  • 做ppt找图片网站南宁网站建设长春
  • 手机网站建设介绍discuz网站建设教学视频教程
  • 怎样才能建网站星月教你做网站
  • 企业网站内容策划建站公司
  • 网站制作中企动力优泰安 网站建设
  • wordpress主题的网站模板国内的平面设计网站
  • 四个免费h5网站网站建设合作品牌
  • 统计 网站关键字 布局毕业设计可以做哪些简单网站
  • 取消网站备案盘锦市网站建设
  • 商丘网站开发网站怎么修改模板内容