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

南宁论坛建站模板福清做网站的公司

南宁论坛建站模板,福清做网站的公司,网站首页设计定位,2021年热门关键词应用场景——集合覆盖问题 假设存在下面需要付费的广播台,以及广播台信号可以覆盖的地区。如何选择最少的广播台,让所有的地区都可以接收到信号 贪心算法介绍 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/516543/

相关文章:

  • 国内网站备案电子版简历
  • 网站建设费用入账打开微信公众号
  • 郑州网站建设特色网页游戏吧
  • 龙岗中心城有学网站建设连云港市城乡建设管理局网站
  • 中国城乡与住房建设部网站首页泉州百度竞价推广
  • 网站设计难点有没有做生物科技相关的网站
  • 网站做动态图片不显示静态网站可以做留言板
  • 花瓣设计网站官网入口长网址变成短网址
  • 搜索引擎排名网站如何上传模板到网站
  • 制作公司网站 黑龙江wordpress 文章结尾
  • 定西网站建设河南做网站最好的公司
  • 开发网站用php还是jsp北京电力建设公司官网
  • 凡科做的网站提示证书错误网站建设设计图软件
  • 哈尔滨网站建设模板策划做企业网站要不要我们自己提供网站相关的图片?
  • 海南网站运营托管咨询做网站码
  • 备案网站域名和主机关系wap网站制作app
  • 进入网站后台代码企业网站备案费用
  • 网站备份和备案的区别衡水建设企业网站
  • 服务器租用相关网站深圳品牌seo
  • redis做网站统计网站检测工具
  • 静安做网站网站建设工种
  • 网站如何备案工信局电脑上安装wordpress
  • 加强主流网站集群传播能力建设网站建设多选题
  • 网站建设项目特色云开发低码
  • 泰州网站建设专业团队刷alexa联盟
  • 南宁比较有好的网站制作公司盐城市城乡建设局网站
  • 1688网站建设与维护h5页面制作网站免费
  • 必应站长平台给前端做网站的图片叫什么软件
  • 有实力的网站排名优化软件iis7部署asp网站
  • 什么网站有教做详情页视频 播放网站怎么做