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

装修公司做网站高端网站建设专业公司

装修公司做网站,高端网站建设专业公司,基于ssm框架的网站开发论文,如何建立网站域名应用场景——集合覆盖问题 假设存在下面需要付费的广播台,以及广播台信号可以覆盖的地区。如何选择最少的广播台,让所有的地区都可以接收到信号 贪心算法介绍 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.ds6.com.cn/news/75854.html

相关文章:

  • 网上做彩票网站排名武汉网站设计公司
  • 楼凤网站怎么做的国内免费域名注册
  • 上海网站建设上海迈歌免费b站推广入口
  • 网站开发助理seo诊断方法步骤
  • 中企动力 35 做网站手机怎么创建自己的网站平台
  • 网站制作公司百度推广怎么样才有效果
  • 新疆重点项目建设网站方象科技的企业愿景
  • 宁波企业网站优化推广百度推广怎么做步骤
  • 糗百网站源码郑州竞价托管公司哪家好
  • 二进制可以做网站是吗关键词如何快速排名
  • 做网站的公司名称东莞seo推广机构帖子
  • 自己开公司seo优化收费
  • 广州网站建设制作公司西安网站建设推广
  • h5网站建设方案.docsem优化师是什么意思
  • 织梦cms可以做淘宝客网站么入门seo技术教程
  • 海南海口做网站优化seo报价
  • 佛山网站建设微商已经被国家定为传销了
  • 如何增加网站访问量百度代理查询
  • 做网站哪里的服务器速度快优化设计五年级上册语文答案
  • 杭州集团公司网站建设seo会被取代吗
  • 博客网站开发优化清理大师
  • 网站设计常用软件2345网址导航用户中心
  • 如何建设正规彩票网站网站建设公司地址在哪
  • 深圳的上市公司有哪些公司北京网站优化公司哪家好
  • 想自己搞一个视频网站怎么做四川企业seo
  • 长春网站设计价格新闻最近新闻10条
  • 如何做网站支付链接百度手机端推广
  • 棕色网站模板泰安百度推广电话
  • 郑州网站修改建设如何网站关键词优化
  • 网站加载模式神马seo教程