满分求码箱子算法
内容:
假设一个托盘:托盘上每层能码放底面积相同、而且数量固定的箱子(如:能码放9个底面积相同的箱子),但是箱子的高度不同。
假设有箱子A 12 个 ,箱子B 15个 ,箱子C 36个,每层码放9个箱子。
箱子的高度A> B> C,那么第一层码放9个A箱子,第二层码放3个A箱子和6个B箱子,以此类推。
每层的高度以最高的箱子为准。(如:第二层有3个A箱子和6个B箱子,那么第二层的高度是A箱子的高度。)
求得所有箱子码放在托盘上的高度。
求此题算法
谢谢各位
------解决方案--------------------路过,帮顶
------解决方案--------------------顶~~~~~~~~
------解决方案--------------------请教能不能写成个方法 通过循环来计算呢?
------解决方案--------------------LZ面积相等是什么意思“能码放9个底面积相同的箱子”A,B,C的面积要考虑吗?
还有这个码法是不是先码A码完了码B
如果是这样的码法不要循环,只要用箱子数除9
------解决方案--------------------回Don_Juan(只求一炮)
A,B,C的面积不考虑
是先码A码完了码B
谢谢大家
------解决方案--------------------顶~~~~~~~~
------解决方案--------------------public class BoxTest
{
public static void main(String[] args)
{
Box A=new Box(5,12);
Box B=new Box(3,15);
Box C=new Box(1,36);
int width=0;
if(A.getamount()%9!=0)
{
width+=(A.getamount()/9+1)*A.getHigh();
B.setamount(B.getamount()-(9-A.getamount()%9));
}
else
width+=(A.getamount()/9)*A.getHigh();
if(B.getamount()%9!=0)
{
width+=(B.getamount()/9+1)*B.getHigh();
C.setamount(C.getamount()-(9-B.getamount()%9));
}
else
width+=(B.getamount()/9)*B.getHigh();
if(C.getamount()%9!=0)
width+=(C.getamount()/9+1)*C.getHigh();
else
width+=(C.getamount()/9)*C.getHigh();
System.out.println( "高度是: "+width);
}
}
class Box
{
public Box(int high,int amount)
{
this.high=high;
this.amount=amount;
}
private int high,amount;
public int getHigh()
{
return high;
}
public int getamount()
{
return amount;
}
public void setamount(int amount)
{
this.amount=amount;
}
}
这个问题被我写复杂了我也学习中,不过这样只能算这三个箱子,如果要动态的设置我认为应该把这个Box类设为ArrayList,实现Comparable <T> 不知道是不是应该这样
------解决方案--------------------郁闷阿~~~好像都不对呢!
------解决方案--------------------LZ的意思是不是这样
A 12 个 ,箱子B 15个 ,箱子C 36个...
箱子的高度A> B> C...
ABC假设高度分别 13、9、5
那么第一层码放9个A箱子,第二层码放3个A箱子和6个B箱子,以此类推。
那第一层的高度就是13,第二层的高度也是13,第三层的高度就是9
第四层的高度就是9,第五层的高度也是5,是不是这样???