首页 > 解决方案 > 如何将相同尺寸的 3d 矩形物品放入盒子中

问题描述

我正在做一个项目,该项目需要我找到可以装在一个盒子里的物品数量。所有项目都相同,尺寸相同。我需要计算物品是否可堆叠和/或可翻转的数量。我看到了很多背包算法,但都是关于不同尺寸和重量的物品。这是我的代码。堆叠允许堆叠物品,如果不可堆叠,则只能将一件物品放置在 Z 轴上。翻转正在从 5 到 0 开始的项目的 6 个方向之间切换,我每次都尝试翻转并尝试放置。我的问题是重叠的项目和没有堆栈的翻转给出错误的数字。提前谢谢

    private int Calculate(int X,int Y,int Z,int Xb,int Yb,int Zb,Boolean stack,int flip)
    {
        int result = 0;
        if ((X > Xb || Y > Yb || Z > Zb )&& flip == 0) { return 0; }

        else
        {
            int Xc=0,Xr=0,Yc=0,Yr=0,Zc=0,Zr = 0;
             Xc = Xb / X;
             Xr = Xb % X;
             Yc = Yb / Y;
             Yr = Yb % Y;
            if (stack)
            {
                 Zc = Zb / Z;
                 Zr = Zb % Z;
            }

                if (stack) {

                    result= Zc * Xc * Yc;
            }
            else {
                    //Seq.Text += "no stack";
                    result= Xc * Yc;
                }
            if (result > 0) Seq.Text += result+" flip "+flip+" ";
            if (flip == 0)
                    return result;
            else
            {

                int flip2 = --flip;
                if (flip2 == 4 || flip2 == 2 || flip2 == 0)
                { int x = Calculate(X, Z, Y, Xb, Yr, Zb, stack, flip2) + Calculate(X, Z, Y, Xr, Yb, Zb, stack, flip2) + Calculate(X, Z, Y, Xb, Yb, Zr, stack, flip2);
                        return result + x;
                }

                else if (flip2 == 3)
                { int x= Calculate(Z, X, Y, Xr, Yb, Zb, stack, flip2) + Calculate(Z, X, Y, Xb, Yr, Zb, stack, flip2) + Calculate(Z, X, Y, Xb, Yb, Zr, stack, flip2);     
                    return result + x;
                }
                else if (flip2 == 1)
                {
                    int x = Calculate(Y, Z, X, Xb, Yr, Zb, stack, flip2) + Calculate(Y, Z, X, Xb, Yb, Zr, stack, flip2) + Calculate(Y, Z, X, Xr, Yb, Zb, stack, flip2);

                    return result + x;
                }

                else return 0;



            }

        }
    }

标签: knapsack-problem

解决方案


推荐阅读