2025-01-25 贪心算法-电台问题
This commit is contained in:
parent
d11a8f629c
commit
7897698f68
83
src/dataANDcalc/java/algorithm/Greedy.java
Normal file
83
src/dataANDcalc/java/algorithm/Greedy.java
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
package algorithm;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class Greedy {
|
||||||
|
|
||||||
|
private HashMap<String, List<String>> radios = new HashMap<>();
|
||||||
|
|
||||||
|
private HashSet<String> areas = new HashSet<>();
|
||||||
|
|
||||||
|
private List<String> selectRadios = new ArrayList<>();
|
||||||
|
|
||||||
|
|
||||||
|
private void allArea(){
|
||||||
|
for(Map.Entry<String, List<String>> entry : radios.entrySet()){
|
||||||
|
areas.addAll(entry.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void greedySelectRadio(){
|
||||||
|
while(areas.size() > 0){
|
||||||
|
String maxKey = "";
|
||||||
|
int coverSize = 0;
|
||||||
|
for(Map.Entry<String, List<String>> entry : radios.entrySet()){
|
||||||
|
int currentCoverSize = 0;
|
||||||
|
List<String> values = entry.getValue();
|
||||||
|
for(String value : values){
|
||||||
|
if(areas.contains(value)){
|
||||||
|
currentCoverSize ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(currentCoverSize > coverSize){
|
||||||
|
maxKey = entry.getKey();
|
||||||
|
coverSize = currentCoverSize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
selectRadios.add(maxKey);
|
||||||
|
List<String> selects = radios.get(maxKey);
|
||||||
|
for(String select : selects){
|
||||||
|
areas.remove(select);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showSelectRadio(){
|
||||||
|
System.out.println("选择的电台:");
|
||||||
|
for(String radio : selectRadios){
|
||||||
|
System.out.println(radio);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Greedy greedy = new Greedy();
|
||||||
|
List<String> K1 = new ArrayList<>();
|
||||||
|
K1.add("北京");
|
||||||
|
K1.add("上海");
|
||||||
|
K1.add("天津");
|
||||||
|
greedy.radios.put("K1", K1);
|
||||||
|
List<String> K2 = new ArrayList<>();
|
||||||
|
K2.add("北京");
|
||||||
|
K2.add("广州");
|
||||||
|
K2.add("深圳");
|
||||||
|
greedy.radios.put("K2", K2);
|
||||||
|
List<String> K3 = new ArrayList<>();
|
||||||
|
K3.add("成都");
|
||||||
|
K3.add("上海");
|
||||||
|
K3.add("杭州");
|
||||||
|
greedy.radios.put("K3", K3);
|
||||||
|
List<String> K4 = new ArrayList<>();
|
||||||
|
K4.add("上海");
|
||||||
|
K4.add("天津");
|
||||||
|
greedy.radios.put("K4", K4);
|
||||||
|
List<String> K5 = new ArrayList<>();
|
||||||
|
K5.add("杭州");
|
||||||
|
K5.add("大连");
|
||||||
|
greedy.radios.put("K5", K5);
|
||||||
|
greedy.allArea();
|
||||||
|
greedy.greedySelectRadio();
|
||||||
|
greedy.showSelectRadio();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user