资源简介
多个车子,N个箱子,用二维矩形方式进行装车。采用二叉树实现。java
代码片段和文件信息
package feng.dai.com.zx;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
/**
* 神奇四侠
* Created with IntelliJ IDEA.
* Date:2019/3/21
* Time:10:57
*
* @author Human Torch
* @since JDK 1.8
* Copyright (c) 2019 imdada System Incorporated All Rights Reserved.
*/
public class baseBoxChoose {
private static final Logger logger = LoggerFactory.getLogger(baseBoxChoose.class);
/**
* 当前车子的初始大小
*/
protected CarBlock root;
/**
* 当前装箱的车子
*/
protected Car car;
protected List boxList;
public baseBoxChoose(Car car List boxList) {
this.car = car;
this.boxList = boxList;
}
/**
* 给箱子安排位置
*/
public void fit() {
}
/**
* 分解车厢面积
*
* @param carBlock
* @param length
* @param width
*/
protected CarBlock splitCarBlock(CarBlock carBlock int length int width) {
//当前位置被放了箱子了
carBlock.setUsed(true);
//箱子右边的大小
CarBlock rightCarBlock = new CarBlock(carBlock.getX() + length carBlock.getY() carBlock.getLength() - length width);
//箱子下边的大小
CarBlock downCarBlock = new CarBlock(carBlock.getX() carBlock.getY() + width carBlock.getLength() carBlock.getWidth() - width);
//设置当前箱子的右边及下遍的大小
carBlock.setRight(rightCarBlock);
carBlock.setDown(downCarBlock);
return carBlock;
}
/**
* 给箱子找个合适的位置
* 没有地方可以放,则返回 null
*
* @param root 当前剩余的位置
* @param length
* @param width
*/
protected CarBlock findCarBlock(CarBlock root int length int width Box box) {
/**
* 判断是否被使用了
*/
if (root.isUsed()) {
//如果被使用了。就看看他的右边或者下边是否还有位置
CarBlock carBlock = findCarBlock(root.getRight() length width box);
if (carBlock != null) {
return carBlock;
}
return findCarBlock(root.getDown() length width box);
} else if ((length <= root.getLength() && (width <= root.getWidth()))) {
//就返回当前位置可以放箱子
return root;
} else if ((width <= root.getLength() && (length <= root.getWidth()))) {
//旋转一下箱子
box.setWidth(length);
box.setLength(width);
return root;
} else {
//没法放
return null;
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2811 2019-03-21 16:14 ba
文件 1008 2019-03-21 11:42 Box.java
文件 1076 2019-03-21 16:14 BoxChoose01.java
文件 1082 2019-03-21 16:14 Car.java
文件 1915 2019-03-21 11:16 CarBlock.java
文件 954 2019-03-21 16:15 Container.java
文件 2344 2019-03-21 16:31 Slaves.java
文件 2236 2019-03-21 16:15 SortBlocks.java
文件 2003 2019-03-21 16:28 TestMain.java
- 上一篇:Java 2 实用教程第五版课本代码
- 下一篇:java加密文件,可自定义密钥
评论
共有 条评论