首页   注册   登录
 Breadykid 最近的时间轴更新

Breadykid

V2EX 第 187226 号会员,加入于 2016-08-16 15:51:30 +08:00
Breadykid 最近回复了
macbook pro ,中高配,和苹果手机一样,用过且会用不会 再安卓
@woodensail 就是,如果有多个重叠的话,是不是要遍历多次哇?
@no1xsyzy emmmmmmm,看上去处理的小复杂。。。
@raysmond 一次遍历怎么取所有的重叠?可能 item1,item2,item3 重叠,然后 item4,item5 重叠这样
@jmc891205 素的
@uleh 有道理昂
我最后的实现哇,如果求得是这个意思得话


public void calculate(Ball[] balls) {

final String[] colorType = {Color.RED.getKey(),Color.ORANGE.getKey(),Color.YELLOW.getKey(),Color.BLUE.getKey()};
final String[] materialType = {Meterial.IRON.getKey(),Meterial.WOOD.getKey(),Meterial.GLASS.getKey()};

// 质量排序
for (int i = 0; i < balls.length; i++) {
for (int j = 1; j < balls.length; j++) {
int a = balls[i].getWeight();
int b = balls[j].getWeight();
if (i<j && a<b) {
Ball temp = balls[i];
balls[i] = balls[j];
balls[j] = temp;
}
}
}

// color
for (int n=0; n<colorType.length; n++) {
int totalWeight = 0;
final int count = 3;
List<Ball> color = new ArrayList<>();
for (int i=0; i<balls.length; i++) {
if (colorType[n].equals(balls[i].getColor().getKey())) {
if (color.size()<count) {
System.out.println(balls[i].toString());
color.add(balls[i]);
totalWeight+=balls[i].getWeight();
}
}
}
System.out.println(String.format("%s 总质量 %s",colorType[n],totalWeight));
}

// material
for (int n=0; n<materialType.length; n++) {
int totalWeight = 0;
final int count = 3;
List<Ball> material = new ArrayList<>();
for (int i=0; i<balls.length; i++) {
if (materialType[n].equals(balls[i].getMeterial().getKey())) {
if (material.size()<count) {
System.out.println(balls[i].toString());
material.add(balls[i]);
totalWeight+=balls[i].getWeight();
}
}
}
System.out.println(String.format("%s 总质量 %s",materialType[n],totalWeight));
}
}
@cigarzh 确实像背包问题,但我不知道怎么搞
@maichael 昂,我试下
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1394 人在线   最高记录 4019   ·  
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 12ms · UTC 00:02 · PVG 08:02 · LAX 16:02 · JFK 19:02
♥ Do have faith in what you're doing.
沪ICP备16043287号-1