/**
- 有若 7 个球框,每个球筐最多能放 3 个球,可以不放球。
- 7 个球筐上依次写着[红球,橙球,黄球,蓝球,铁球,木球,玻璃球],
- 表示这个球筐里对球的限定。现在有 20 个球,
- 规格如下:
- 红铁球 15g,红铁球 26g,
- 橙铁球 25g,
- 黄铁球 18g,黄铁球 13g,
- 蓝铁球 33g,
- 红木球 31g,红木球 36g,
- 橙木球 11g,橙木球 25g,
- 黄木球 7g,黄木球 18g,
- 蓝木球 10g,
- 红玻璃球 3g,
- 橙玻璃球 21g,橙玻璃球 16g,
- 黄玻璃球 45g,黄玻璃球 29g,
- 蓝玻璃球 3g,蓝玻璃球 7g
- 请问组成最大重量的 N 个球筐限定的组合是什么?
- 请写出伪代码。 */
我写了一半的代码,不知如何继续下去,求大佬
public class Ball {
private Color color;
private Meterial meterial;
private int weight;
}
public enum Color {
YELLOW("YELLOW","黄色"),
ORANGE("ORANGE","橙色"),
RED("RED","红色"),
BLUE("BLUE","蓝色");
}
public enum Meterial {
IRON("IRON","铁"),
WOOD("WOOD","木"),
GLASS("GLASS","玻璃");
}
public void calculate(Ball[] balls) {
int totalWeight = 0;
List<Ball> red = new ArrayList<>();
List<Ball> orange = new ArrayList<>();
List<Ball> yellow = new ArrayList<>();
List<Ball> blue = new ArrayList<>();
List<Ball> iron = new ArrayList<>();
List<Ball> wood = new ArrayList<>();
List<Ball> glass = new ArrayList<>();
HashMap<String,List<Ball>> basketsMap = new HashMap();
basketsMap.put(Color.RED.getKey(),red);
basketsMap.put(Color.ORANGE.getKey(),orange);
basketsMap.put(Color.YELLOW.getKey(),yellow);
basketsMap.put(Color.BLUE.getKey(),blue);
basketsMap.put(Meterial.IRON.getKey(),iron);
basketsMap.put(Meterial.WOOD.getKey(),wood);
basketsMap.put(Meterial.GLASS.getKey(),glass);
for (int i=0; i<balls.length; i++) {
if (basketsMap.containsKey(balls[i].getColor().getKey())) {
List<Ball> color = basketsMap.get(balls[i].getColor().getKey());
if (color.size()<3) {
color.add(balls[i]);
totalWeight+=balls[i].getWeight();
}
else {
System.out.println(basketsMap.get(balls[i].getColor().getKey()).toArray().toString());
basketsMap.remove(balls[i].getColor().getKey());
}
}
if (basketsMap.containsKey(balls[i].getMeterial().getKey())) {
List<Ball> material = basketsMap.get(balls[i].getMeterial().getKey());
if (material.size()<3) {
material.add(balls[i]);
totalWeight+=balls[i].getWeight();
}
else {
System.out.println(basketsMap.get(balls[i].getMeterial().getKey()).toArray().toString());
basketsMap.remove(balls[i].getColor().getKey());
}
}
}