内容:
假设一个托盘:托盘上每层能码放底面积相同、而且数量固定的箱子(如:能码放9个底面积相同的箱子),但是箱子的高度不同。
假设有箱子A 12 个 ,箱子B 15个 ,箱子C 36个,每层码放9个箱子。
箱子的高度A>B>C,那么第一层码放9个A箱子,第二层码放3个A箱子和6个B箱子,以此类推。
每层的高度以最高的箱子为准。(如:第二层有3个A箱子和6个B箱子,那么第二层的高度是A箱子的高度。)
求得所有箱子码放在托盘上的高度。
求此题算法
谢谢各位
假设一个托盘:托盘上每层能码放底面积相同、而且数量固定的箱子(如:能码放9个底面积相同的箱子),但是箱子的高度不同。
假设有箱子A 12 个 ,箱子B 15个 ,箱子C 36个,每层码放9个箱子。
箱子的高度A>B>C,那么第一层码放9个A箱子,第二层码放3个A箱子和6个B箱子,以此类推。
每层的高度以最高的箱子为准。(如:第二层有3个A箱子和6个B箱子,那么第二层的高度是A箱子的高度。)
求得所有箱子码放在托盘上的高度。
求此题算法
谢谢各位
Dim A As Long
Dim B As Long
Dim C As Long
Dim Ha As Long
Dim Hb As Long
Dim Hc As Long
Dim H As Long
Dim H1 As Long
Dim H2 As Long
Dim H3 As Long A = 12
B = 15
C = 36
Ha = 10
Hb = 8
Hc = 6
If A Mod 9 = 0 Then
H1 = A \ 9 * Ha
Else
H1 = (A \ 9 + 1) * Ha
End If
B = B - A Mod 9
If B Mod 9 = 0 Or B < 0 Then
H2 = B \ 9 * Hb
Else
H2 = (B \ 9 + 1) * Hb
End If
If B < 0 Then
C = C - A Mod 9 - B
Else
C = C - B Mod 9
End If
If C Mod 9 = 0 Or C < 0 Then
H3 = C \ 9 * Hc
Else
H3 = (C \ 9 + 1) * Hc
End If
H = H1 + H2 + H3
Print H '电脑计算等于60
End Sub
有没有用java写的呢?
期待你程序
--------------------
long A, B, C, Ha, Hb, Hc, H, H1, H2, H3;
A = 12;
B = 15;
C = 36; Ha = 10;
Hb = 8;
Hc = 6; if (A % 9 == 0)
H1 = A / 9 * Ha;
else
H1 = (A / 9 + 1) * Ha; B = B + A % 9 - 9;
if (B % 9 == 0 || B < 0) {
H2 = B / 9 * Hb;
C = C + (B < 0 ? B : 0);
} else {
H2 = (B / 9 + 1) * Hb;
C = C + B % 9;
} if (C % 9 == 0 || C < 0)
H3 = C / 9 * Hc;
else
H3 = (C / 9 + 1) * Hc; H = H1 + H2 + H3; System.out.println(H);
Dim Num(2) As Long
Dim H(2) As Long
Dim tH As Long '总高度 Num(0) = 12
Num(1) = 15
Num(2) = 36
H(0) = 10
H(1) = 8
H(2) = 6
tH = TotalH(Num, H, 9)
Print tH
End SubPrivate Function TotalH(BoxNum() As Long, BoxH() As Long, NumPerLayer As Long) As Long
Dim i As Long
Dim RestSpace As Long For i = 0 To UBound(BoxNum)
If BoxNum(i) - RestSpace <= 0 Then
RestSpace = RestSpace - BoxNum(i)
Else
TotalH = TotalH + ((BoxNum(i) - RestSpace) \ NumPerLayer) * BoxH(i)
If (BoxNum(i) - RestSpace) Mod NumPerLayer > 0 Then
TotalH = TotalH + BoxH(i)
RestSpace = NumPerLayer - (BoxNum(i) - RestSpace) Mod NumPerLayer
End If
End If
'一层一层看看
Print TotalH
Next
End Function
private int A=12;
private int B=15;
private int C=36;
private int D=9;
private static final int ha=3;
private static final int hb=2;
private static final int hc=1;
public int suanfa()
{
int h_box=0;//定义高度
int w_box=9;//定义地面
while(A>0)
{
if (w_box>0) {
A--; //本层没有满 继续加
w_box--;
} else {
h_box += ha;
w_box = 9; //本层已经满 换上层
}
}
if(A==0&&w_box%9!=0)
{ h_box += ha;
B = B - w_box;
w_box=9;
}
else if(A==0&&w_box%9==0)
{
h_box += ha;
w_box=9; }//a结束
while (B > 0) {
if (w_box != 0) {
B--; //本层没有满 继续加
w_box--;
} else {
h_box += hb;
w_box = 9; //本层已经满 换上层
} } if(B==0&&w_box%9!=0){
h_box += hb;
C=C-w_box;
w_box=9;}
else if(B==0&&w_box%9==0)
{
h_box += ha;
w_box=9; } while(C>0)
{
if (w_box>0) {
C--; //本层没有满 继续加
w_box--;} else if (A==0&&B==0&&C==0&&w_box % 9 != 0)
{
h_box += hc;
}
else {
h_box += hc;
w_box = 9;
}}
return(h_box);
} public static void main(String[] args) {
int i=0;
Untitled1 u=new Untitled1();
i=u.suanfa();
System.out.print(i);
}
}
大概写了一个 运行结果12