資源簡介
多個車子,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加密文件,可自定義密鑰
評論
共有 條評論