您现在的位置是:首页 > 后台技术 > 数据结构与算法数据结构与算法
贪心算法(图文)
第十三双眼睛2023-10-22【数据结构与算法】人已围观
简介贪心算法
贪心算法
package com.xingchen.day016; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; public class Greedy { public static void main(String[] args) { //创建广播电脑集合 Map<String, HashSet<String>> map = new HashMap<>(); HashSet<String> set1 = new HashSet<>(); set1.add("北京"); set1.add("上海"); set1.add("天津"); HashSet<String> set2 = new HashSet<>(); set2.add("广州"); set2.add("北京"); set2.add("深证"); HashSet<String> set3 = new HashSet<>(); set3.add("成都"); set3.add("上海"); set3.add("杭州"); HashSet<String> set4 = new HashSet<>(); set4.add("上海"); set4.add("天津"); HashSet<String> set5 = new HashSet<>(); set5.add("杭州"); set5.add("大连"); map.put("k1", set1); map.put("k2", set2); map.put("k3", set3); map.put("k4", set4); map.put("k5", set5); Set<String> all = new HashSet<>(); all.add("北京"); all.add("上海"); all.add("天津"); all.add("广州"); all.add("深证"); all.add("成都"); all.add("杭州"); all.add("大连"); List<String> selectList = new ArrayList<>(); //定义一个临时集合.保存在遍历过程中 Set<Object> tempSet = new HashSet<>(); String maxKey = null; while (all.size() != 0) {//只要all不为0,就说明还没有覆盖完全 //每次循环开始,将maxKey置空 maxKey = null; for (String key: map.keySet()) { tempSet.clear(); HashSet<String> temp = map.get(key); tempSet.addAll(temp); // 交集会赋值给tempSet tempSet.retainAll(all); if (tempSet.size() > 0 && (maxKey == null || tempSet.size()> map.get(maxKey).size())) { maxKey = key; } } if (maxKey != null) { selectList.add(maxKey); all.removeAll(map.get(maxKey)); } } System.out.println("得到的结果时"+ selectList); } } |
Tags:
很赞哦! ()
上一篇:KMP算法解决字符传匹配(图文)
下一篇:普利姆算法(图文)
相关文章
随机图文
-
二叉排序树的创建(图文)
二叉排序树的创建 -
环形链表(图文)
环形链表 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。 如果链表中存在环 ,则返回 true 。 否则,返回 false 。 -
移除链表元素(图文)
移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 -
爬楼梯(图文)
爬楼梯